MongoDB:如何用“IS NOT(MAX())”标准查询文档?

这是一个称为test的集合。

 { {"_id": 1, "groupName": "A", lastModified: ISODate("2012-09-17T23:25:56.314Z")}, {"_id": 2, "groupName": "A", lastModified: ISODate("2013-09-17T23:25:56.314Z")}, {"_id": 3, "groupName": "A", lastModified: ISODate("2016-01-10T23:25:56.314Z")}, {"_id": 4, "groupName": "B", lastModified: ISODate("2020-09-17T23:25:56.314Z")}, {"_id": 5, "groupName": "B", lastModified: ISODate("2000-01-17T23:25:56.314Z")} } 

我想用这些标准来查询这个集合中的一些文档:

  1. groupName是“A”。
  2. 其最后修改不是具有"groupName": "A"的文档的lastModified字段的最大值( ISODate("2016-01-10T23:25:56.314Z") )。

所以在这种情况下,结果应该是

 { {"_id": 1, "groupName": "A", lastModified: ISODate("2012-09-17T23:25:56.314Z")}, {"_id": 2, "groupName": "A", lastModified: ISODate("2013-09-17T23:25:56.314Z")} } 

我使用Node.js和node-mongodb-native模块。 我可以做到这一点,而不必提取和遍历整个文档? 我的意思是,我可以在DB内做吗?

如果你肯定会过滤groupName,这个简单的查询可以帮助你实现你想要的结果,而没有太多的性能开销。

db.test.find({groupName : "A"}).skip(1).sort({lastModifiedAt : -1})

如果您有更复杂的场景/分组/嵌套,则可能需要使用aggregatemapReduce框架。