对象内的猫鼬FindAndUpdate元素

时间:2019-07-18 08:38:06

标签: mongodb mongoose

带有这样的对象:

{
  _id: 'somehting',
  foo1: 'bar1',
  foo2: 'bar2'
}

如果我这样做:

collection.findOneAndUpdate({_id: something }, {foo2: 'new value'});

foo2将被修改,而foo1将保持不变,因为据我所知Mongoose在内部使用$ set。

如果对象却像这样:

{
  _id: 'somehting',
  meta: {
        foo1: 'bar1',
        foo2: 'bar2'
  }
}

在这种情况下,请执行以下操作:

collection.findOneAndUpdate({_id: something }, {meta: { foo2: 'new value'}});

将完全覆盖 meta ,仅保留 foo2

是否有一种方法可以实现与数据位于对象根目录而不是子对象中相同的行为?

我知道我可以首先进行查找,将 meta 对象与新数据合并,然后进行保存,但是我想使用findAndUpdate在一个查询中进行查找。有可能吗?

1 个答案:

答案 0 :(得分:0)

您可以使用$set运算符在MongoDB查询中设置对象的特定值。