当前位置: 首页 > 面试题库 >

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

裴华荣
2023-03-14
问题内容

我有以下模型:

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

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



 类似资料:
  • 如何返回特定日期所在的行号? 类似这样的事情:

  • 我正在尝试查找不包含至少一个具有特定字段值的文档的所有文档。例如,下面是一个示例集合: 我希望找到docs块中没有包含至少一个foo=1的记录的文档的每个记录。在上面的示例中,应该只返回第二个文档。 我还查看了$nin运算符,但示例只显示数组包含基元值列表时的情况,而不是附加文档。当我尝试使用类似于下面的东西来实现这一点时,它查找的是确切的文档,而不仅仅是我想要的foo字段。 有没有用基本运算符来

  • 假设您有一个装有物品的盒子。每个项目可能位于多个框中,因此每个项目都有一个指向项目所在框的ID数组。 ={... boxIds:['000001','000002','000003']...} 在mongoDB中,您可以说来获取子节点A和000002在box Ids数组中的所有其他子节点。这是我在mongoose(coffeescript)中尝试的: 编辑 盒子_id是正常的mongodb id字

  • 问题内容: 我不知道如何在下面编写查询。 我的桌子是 我需要在col2中同时存在两个参数的地方选择不同的col1 id。例如。如果我发送6,7应该发送给我5 问题答案: 尝试:

  • 我有这个ArrayList- ,一个整数被添加到移动[1]。然后将该数组添加到ArrayList中,然后重复该过程,这样我就有了一个“移动”列表。 我的问题是,我不确定如何在ArrayList(“树”)中找到仅在元素中包含特定值的数组(“移动”)——因为元素每次都是唯一的。 然后,我想制作一个所有匹配项的数组/列表。例如,一个数组,它包含与3的值相匹配的所有移动值。因此,我会留下一个数组/2D数组

  • 问题内容: 我有一个Array类型的PHP变量,我想找出它是否包含特定值,并让用户知道它在那里。这是我的数组: 我想做些类似的事情: 最好的方法是什么? 问题答案: 使用功能。