{ field_name: { $not: { $lt: 100 } } }

如何使用MongoDB聚合语言编写上述内容?

我不能使用:

{ $gte: ["$field_name", 100] }

因为可能有field_name人失踪.当它缺失的时候,它应该永远是真的.这就是我使用$not的原因.

应该能够在field_name上使用索引

推荐答案

$not$gt(不大于)等于$lte(小于或等于).

而如果该字段为null或缺失,则可以使用$ifNull运算符定义默认值.

db.collection.aggregate([
  {
    $match: {
      $expr: {
        $lte: [
          {
            $ifNull: [
              "$field_name",
              0
            ]
          },
          100
        ]
      }
    }
  }
])

Demo @ Mongo Playground

Node.js相关问答推荐

使用Moongose处理node.js中重定向的then()块链

GitLab SAST中的Nodejcan未找到匹配项

自动将Selify打开的Chrome窗口移动到Mac OS中的第三个显示器

MongoDB如果文档S的字段小于另一个字段,则将该字段加一

使用ReadableStream.管道时NodeJS Crypto Hash不正确

如何在Angular jest测试中调用Nodejs的垃圾收集? node v20的测试速度慢且内存泄漏

将 POST 的 json 变量格式化为 lambda

未授权使用联合身份未授权用户角色从 Amplify graphQL 访问类型 Y 上的 X

找不到模块bcryptjs

mongoose 7.0.3 使用运算符 $and 严格搜索日期

如何配置 Nginx React 和 Express

Cloudflare 522 错误 - javascript 客户端连接到 node 服务器

多字段传递获取查询失败

WSL2 上需要脚本运行的 NPM 包的权限被拒绝

仅显示用户在 Reactjs 中使用服务器端发布的帖子是 Node Js、Mongodb

GridFS 大文件下载使 Node.js 服务器崩溃. MongoServerError:排序超出了字节的内存限制

在 Node.js 与 Cron 作业(job)中设置间隔?

如何使用 gulp-uglify 缩小 ES6 函数?

Node.js 与 .net 中的异步/等待

我可以让 node --inspect 自动打开 Chrome