如何在mongodb更新查询中比较对象

时间:2018-07-24 12:03:23

标签: javascript node.js mongodb mongoose

我们有一个这样的MongoDB集合:

[
  {
    "field1": {
      "key1": true,
      "key2": false
    }
  },
  {
    "field1": {
      "key1": true,
      "key2": true
    }
  }
  ...
  ...
]

我们需要使用field1作为对象的条件进行更新。

我们使用了这样的查询:

document.update({
    { field1: { key1: false, key2: true } }
  }, {
    $set: required updates
  }, {
    multi: true
  })
  .then(() => {})
  .catch((err) => {});

但是似乎没有效果。

我们如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

尝试以下代码:

document.update(
    {
        $and: [{ "field1.key1": false }, { "field1.key2": true }]
    },
    {
        $set:  required updates  // It (required updates) should be an object
    },
    {
        multi: true
    })
    .then(() => { })
    .catch((err) => { });

希望它能给您一个想法!

答案 1 :(得分:1)

您需要对对象内的字段使用.Dot表示法

document.update(
  { "field1.key1": false, "field1.key2": true },
  { "$set": required updates },
  { "multi": true }
)