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

我有以下型号:

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] } } })

这意味着数组中存在“没有列表”.

上一篇:使用mongoose--写接口


下一篇:数据库概述及MongoDB数据库环境搭建