javascript - mongodb 查询检查是否存在具有匹配值的其他文档

标签 javascript mongodb mongodb-query

我想创建一个查询,用它可以检查文档是否有相关文档,例如我有一个文档

{
name:"test1", 
status:"CREATED"
date:"2018-12-12"
user:"foo"
}

我想检索用户没有 status:"OPEN" 的文档的所有文档

我有想法投影一个字段,其中包含为用户和日期打开的文档数量并过滤 0,但我不知道如何做到这一点。

所以当我有以下文件时:

enter image description here

它应该只返回 foo2 和 foo4,因为 foo、foo3 和 foo5 已经具有 status:"OPEN" 的文档

最佳答案

请查找以下代码以获取不存在“OPEN”状态的用户的所有文档:

db.collection.find({
  user: {
    $nin: db.collection.find({status: 'OPEN'}).map((row) => row.user)
  }
});
  • $nin:指定和排除列表。
  • .map((row) => row.user):将过滤后的文档数组转换为仅包含用户 ID 的字符串数组。

关于javascript - mongodb 查询检查是否存在具有匹配值的其他文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53737904/

相关文章:

mongodb - 运行 mongodump 后我得到一个空目录

node.js - 没有$ unwind的$ lookup多个级别?

javascript - 意外的 token 非法(这不是引号问题,而是其他问题)

javascript - bcrypt 未使用 npm 安装(Mac OS X 10.9 - Node v0.10.22)

javascript - 如何等待所有可观察对象按顺序执行?

javascript - jQuery JSON 解析问题

MongoDb.展平内部数组

javascript - 验证 ASP 经典 DDL

javascript - 将 MongoDB 中的帐户创建日期插入 Handlebars 中?

linux - 复制mongodb数据目录到另一台服务器