这是一个名为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”。 - 其
lastModified
不是 的最大值 (ISODate("2016-01-10T23:25:56.314Z")
)文档的lastModified
字段包含"groupName": "A"
。
所以在这种情况下,结果应该是
{
{"_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
模块。
我可以在不获取和迭代整个文档的情况下完成此操作吗?我的意思是,我可以在数据库中完成吗?
最佳答案
如果您确实要按 groupName 进行过滤,这个简单的查询可以帮助您获得所需的结果,而无需太多性能开销。
db.test.find({groupName : "A"}).skip(1).sort({lastModifiedAt : -1})
如果您有更复杂的场景/分组/嵌套,您可能需要使用aggregate
或mapReduce
框架。
关于node.js - MongoDB:如何查询具有 `IS NOT(MAX())`条件的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38419643/