【问题标题】:How do you execute java queries based on ObjectID.timestamp? [duplicate]你如何执行基于 ObjectID.timestamp 的 java 查询? [复制]
【发布时间】:2015-03-04 21:06:17
【问题描述】:

如何从 ObjectID.timestamp() 查询基于时间的查询?

db.myCollectin.findOne()._id.getTimestamp()

我试过了

Date date = new Date();
BasicDBObject query = new BasicDBObject("timestamp", new BasicDBObject("$lt", date);
myCollection.findOne(query);

问题:

没用

【问题讨论】:

    标签: java mongodb mongo-java mongo-java-driver


    【解决方案1】:

    它不起作用,因为您的查询查找一个名为 timestamp 的字段,该字段自然不存在。

    您可以执行下面的 shell 查询之类的操作,但请注意,Mongo 将为您集合中的每个文档评估 JavaScript - 而不使用索引。如果您需要定期查询,我建议将日期存储在文档的字段中。

    db.myCollection.find({$where: "this._id.getTimestamp() < ISODate('2015-03-04T21:18:21.419Z')"})
    

    【讨论】:

    • 正如duplicates 问题的答案中指出的那样,有一种比javascript 评估更有效的方法,它当然会使用索引。
    猜你喜欢
    • 1970-01-01
    • 2010-11-30
    • 2018-04-04
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    相关资源
    最近更新 更多