node.js - MongoDB:如何查询具有 `IS NOT(MAX())`条件的文档?

标签 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-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. 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})

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

关于node.js - MongoDB:如何查询具有 `IS NOT(MAX())`条件的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38419643/

相关文章:

jquery - `window.XMLHttpRequest` 未定义

mongodb - 聚合 : Counting Items Per Hour

mongodb最佳实践: nesting

mongodb - 如何在mongodb中查询子对象

javascript - 带有 Socket.io 的 Ember.js

node.js - 文件上传到 S3 - 0 字节

node.js - 标准_init_linux.go :219: exec user process caused: no such file or directory - docker problem

javascript - ReactJS 和 Express with Axios 返回 404 错误消息

node.js - MongoDB 版本 4^ -- 获取 Node js 中所有数据库的列表

database - 如何通过 putty 上的控制台访问暂存服务器上的数据库 mongodb?