Mongoose 查找记录,其中数组包含 2 个提供的元素

Mongoose find record where array contains 2 elements that are provided

已解决

大家好, 我有一个集合,其中有 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 为假的记录。我正在传递前端成员中的两个字符串。

使用$all

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

mongoplayground

如果要搜索仅包含这两个值和布尔值的确切文档,可以使用以下代码

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

相反,使用 $all 运算符定位包含两个条目的数组,而不考虑数组中的顺序或其他成员,使用以下代码

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

进一步阅读MongoDB documentation