gpt4 book ai didi

MongoDB db.collection.save 存在时覆盖对象

转载 作者:行者123 更新时间:2023-12-02 02:29:12 25 4
gpt4 key购买 nike

在 MongoDB 中,您可以使用 db.collection.save({_id:'abc'}, objectToSave)执行更新插入。

让我们如下定义objectToSave

{_id:'abc', field1:1, field2:2};

在我的集合中,我已经有一个具有相同 _id 值的文档,如下所示:

{_id:'abc', field3:3};

上面的保存功能会将集合中现有的文档替换为

{_id:'abc', field1:1, field2:2};

我想要的是执行 $set 操作以在集合中生成一些文档,如下所示

{_id:'abc', field1:1, field2:2, field3:3};

这可以在保存函数中实现吗?或者我必须编写单独的更新语句?

请注意,objectToSave 的字段是动态的。我使用的语言是 Node.JS。

最佳答案

db.collection.update({'_id':'abc'},{$set:{field1:1,field2:2}},{upsert:true})

应该做你想做的事:

  1. 它会进行更新插入,因此如果文档尚不存在,则会将其创建为 {_id:'abc',field1:1,field2:2} 并且高效,因为使用了索引必须存在
  2. 如果文档已存在,则字段 field1 和 field2 将设置为更新语句中的值。
  3. 如果文档中存在任一字段,它将被覆盖。

由于您没有说明您使用的语言:在普通的 mongoDB 中,没有 save 功能。合并实体的新版本和持久版本的明确要求是非常不寻常的,所以是的,我假设您必须编写一个自定义函数。

关于MongoDB db.collection.save 存在时覆盖对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26250789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com