Node.js MongoDB:如何查询带有“IS NOT(MAX())”条件的文档?
这是一个名为Node.js MongoDB:如何查询带有“IS NOT(MAX())”条件的文档?,node.js,mongodb,Node.js,Mongodb,这是一个名为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-
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
不是具有“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
框架。谢谢。但是,.skip(1)
的目的似乎是删除最伟大的一个,所以它应该在跳过表单之前进行排序。它不应该是db.test.find({groupName:“A”}).sort({lastModified:-1}).skip(1)
?不客气。在编写Mongo查询时,这并不重要。Mongo将始终执行排序
,然后执行跳过
,然后执行限制
。这样答案总是有意义的。试试看,谢谢!这对我帮助很大!