这是一个名为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
<{1}}文件的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。
我可以在不获取和迭代整个文档的情况下执行此操作吗?我的意思是,我可以在DB中做到吗?
答案 0 :(得分:2)
如果你肯定会按groupName过滤,这个简单的查询可以帮助你在没有太多性能开销的情况下实现所需的结果。
db.test.find({groupName : "A"}).skip(1).sort({lastModifiedAt : -1})
但是,如果您有更复杂的方案/分组/嵌套,则可能需要使用aggregate
或mapReduce
框架。