javascript - 查找包含不包含特定值的数组的文档

标签 javascript node.js mongodb mongoose mongodb-query

我有以下型号:

var PersonSchema = new Schema({
    name: String,
    groups: [
        {type: Schema.Types.ObjectId, ref: 'Group'}
    ],
});

我正在寻找一个查询来检索不属于某个组的所有人员(即人员的组数组不包含指定组的 ID)。

我正在考虑这样的事情,但我不确定它是否正确:

Person.find({groups: {$nin: [group._id]})

最佳答案

您的尝试基本上没有问题,但也许这里唯一的澄清是您需要像 $nin 这样的运算符的常见误解。或 $in查询数组时。

你还需要在这里做一个基本的不等式匹配 $ne :

Person.find({ "groups": { "$ne": group._id } })

“数组”运算符不是用于“数组目标”,而是用于提供条件“列表”以方便的形式进行测试。

Person.find({ "groups": { "$nin": [oneId, twoId,threeId] } })

因此,只需对单个条件使用普通运算符,并将 $in$nin 保存在要针对单个值或一个值测试多个条件的地方列表。所以它只是反过来。

如果您确实需要传递参数的“列表”,其中提供的列表中的“无”与数组的内容匹配,则使用 $not 反转逻辑运算符和 $all运营商:

Person.find({ "groups": { "$not": { "$all": [oneId,twoId,threeId] } } })

这意味着提供的“列表中的任何一个”都不存在于数组中。

关于javascript - 查找包含不包含特定值的数组的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26481326/

相关文章:

javascript - 显示/隐藏文本区域改变其高度

javascript - 脚本运行正常,但 Canvas 上没有任何内容

javascript - 使用 Node.js 逻辑创建 Electron 应用程序

android - Node JS FCM token 未向用户发送通知

javascript - 如何在模块导入/配置中设置 .env 变量

node.js - 学习 MEAN Stack 的最佳资源

javascript - 如何将 Material Design Lite 中的 FAB 按钮与混合移动应用程序中的 jQuery 移动代码集成?

javascript - 可点击网格,每个 <td> 使用 onclick 方法更改颜色

mongodb - mongodb 将控制台从独立更改为独立

mongodb - GMongo在对象的嵌入式json中搜索