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")} }
我想用这些标准来查询这个集合中的一些文档:
- 其
groupName
是“A”。 - 其最后修改不是具有
"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})
如果您有更复杂的场景/分组/嵌套,则可能需要使用aggregate
或mapReduce
框架。