在Mongoose中查找包含给定两个元素的数组记录

3

已解决

大家好, 我有一个集合,其中包含1个布尔值和一个包含两个字符串的数组。 例如:

{
    "_id" : ObjectId("62148497fc3ac7c59252b53b"),
    "members" : [ 
        "61e4f988b92b443b29c87c38", 
        "61f0dd62e21a45de185854e9"
     ],
     "isGroup" : false,
     "createdAt" : ISODate("2022-02-22T06:37:11.406Z"),
     "updatedAt" : ISODate("2022-02-22T06:37:11.406Z"),
     "__v" : 0
}

现在我想查找记录,其中成员数组包含这两个字符串,并且isGroup为false。我从前端传递了两个在成员中的字符串。

2个回答

4
如果您想搜索只包含这两个值和布尔型的精确文档,可以使用以下代码。
db.collection.find({
    members:[
        "61e4f988b92b443b29c87c38",
        "61f0dd62e21a45de185854e9"
    ],
    isGroup: false
})

不要使用$elemMatch运算符来定位包含这两个元素的数组,而是使用$all运算符。无论数组中的顺序或其他元素如何,都可以找到包含这两个元素的数组。请使用以下代码:

db.collection.find({
    members:{$all:[
        "61e4f988b92b443b29c87c38",
        "61f0dd62e21a45de185854e9"
    ]},
    isGroup: false
})

更多阅读 MongoDB 文档


很高兴听到这个消息。 - Tharindu Wickramasinghe

3
使用 $all 操作符。
db.collection.find({
  members: {
    "$all": [
      "61e4f988b92b443b29c87c38",
      "61f0dd62e21a45de185854e9"
    ]
  },
  isGroup: false
})

mongoplayground


@HetDelwadiya 如果您能接受这个答案并点赞,那就太好了。 - YuTing
1
我是新手堆栈溢出。我无法投票任何答案。投票需要更高的级别,抱歉。但是,每当我达到15个声望时,它将自动投票。不要忘记投票问题。 - Het Delwadiya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接