检查数组中是否存在所有元素

时间:2018-10-14 16:46:12

标签: node.js mongodb mongoose

我正在尝试使用mongoose查找是否在MongoDB数据库的数组内找到了数组的所有元素。

如果我在MongoDB中的数据是-

{
  row: "A",
  reserve: [1,2,3]
}

并且如果我的查询数据是-

{
  row: "A",
  arr: [1,2] // I want it to return result
}

如果我的查询数据是

{
  row: "A",
  arr: [1,2,4] // I want it to return null
}

我想更新数据,但是每次都在更新

Reserved.updateOne({row: "A", reserve: {$in: arr}, {
  $push: {
    reserve: arr
  }
}, (err, result) => {
  // ...
});

请帮助我。

2 个答案:

答案 0 :(得分:1)

您可以使用$all运算符来匹配数组中的所有元素。

来自文档

  

$all运算符选择字段值是   包含所有指定元素的数组。

db.collection.updateOne({ "row": "A", "reserve": { "$all": array }})

甚至使用查找查询

db.collection.find({ "row": "A", "reserve": { "$all": array }})

答案 1 :(得分:0)

您可以使用$all运算符(link)。像这样:

db.collection.updateOne(
        {
          row: "A",
          reserve: { $all: array } 
        }
)

希望这会有所帮助!