当前位置: 首页 > 面试题库 >

Java / MongoDB按日期查询

郎长卿
2023-03-14
问题内容

我在集合中将值存储为java.util.Date(),但是当我查询以获取两个特定日期之间的值时,最终得到的值超出了范围。这是我的代码:

插入

BasicDBObject object = new BasicDBObject();
...
object.put("dateAdded", new java.util.Date());
collection.insert(object);

查询

BasicDBObject query = new BasicDBObject();
query.put("dateAdded", new BasicDBObject("$gte", fromDate));
query.put("dateAdded", new BasicDBObject("$lte", toDate));
collection.find(query).sort(new BasicDBObject("dateAdded", -1));

当我在Wed Jul 27 16:54:49 EST 2011和之间查询时Wed Jul 27 16:54:49 EST 2011(基本上是fromDate = toDate),我得到的日期Tue Jul 26 09:43:37 EST 2011绝对不可能的对象。我在这里想念什么?


问题答案:

您正在执行的操作是仅在键覆盖中使用{$lte: toDate}丢失$gte运算符进行查询。您想要的是:

query.put("dateAdded", BasicDBObjectBuilder.start("$gte", fromDate).add("$lte", toDate).get());


 类似资料:
  • 此问题是由打字错误或无法再复制的问题引起的。虽然这里可能有类似的问题,但这一问题的解决方式不太可能对未来的读者有所帮助。 我正在尝试向mongoDB查询“日期”在两个日期之间的文档。示例数据是: 我的Java代码是: 但游标对象没有结果。 查询对象如下所示: 我怀疑问题是DB中的日期表示。对此有什么建议吗?

  • 如果日期相同,则使用进行查询将无法正常工作。它更像是。 但如果我给query param加上1秒,它就会工作。 下面是示例查询; 我有一个文档,它是时间戳。 此查询与日期为的文档相匹配,如果我将查询时间戳增加一个,如。 我正在使用mongo控制台,但我在php中遇到了与MongoDate相同的问题 编辑:查询的输出 edit2:问题是mongo的php扩展。它记录了“当文档发送到/从数据库发送时,

  • 问题内容: 我知道ObjectIds包含创建日期。有没有办法查询ObjectId的这一方面? 问题答案: 将时间戳弹出到ObjectId中将详细介绍基于嵌入在ObjectId中的日期的查询。 简要介绍一下JavaScript代码:

  • 我正在尝试使用MongoDBJava驱动程序作为聚合命令的一部分创建查询。目前我允许日期范围或特定日期数组作为参数。例如 日期范围查询工作正常,我解析xml并将其转换为在mongo中生成以下查询的DBObject; 对于指定日期,我只想返回在给定日期的00:00:00.000和第二天的00:00:00.000之间发生的结果。根据我对mongo查询的基本了解,我希望做一个类似于日期范围的$匹配,但是

  • 由于我意识到不能比较字符串格式的($gt、$gte、$lt、$lte等)日期,所以我尝试学习如何使用UTCDateTime。我无法在带有mongoDb\bson\utcdateTime的集合中找到日期 我在试着用这个代码。 据我所知,我也可以找到带有时间戳的日期,但我正在寻找带有UTCDateTime字段的搜索。

  • 问题内容: 我有此查询以获取月结果。但是我想得到今天的结果。 做这个的最好方式是什么? 问题答案: 您的开始日期对象应将当前日期时间设置为(毫秒精度),并将今天的时间设置为: 然后像往常一样在您的MongoDB查询运算符中传递修改后的日期对象: 如果您正在使用 momentjs 库,则可以通过在当前当前日期对象上使用 and 方法,并将字符串作为参数传递来实现: