覆盖生产MongoDB中的现有文档
我最近将一个字段从object更改为object数组 在我的产品中,这个字段只有14个文档,所以我决定更改这些字段 有什么最佳实践可以做到这一点吗 因为这是在我的生产,我需要做的最好的方式可能吗 我得到了这些集合的文档Id。比如['xxx','yyy','zzz',…] 我的文档结构是覆盖生产MongoDB中的现有文档,mongodb,production-environment,upsert,Mongodb,Production Environment,Upsert,我最近将一个字段从object更改为object数组 在我的产品中,这个字段只有14个文档,所以我决定更改这些字段 有什么最佳实践可以做到这一点吗 因为这是在我的生产,我需要做的最好的方式可能吗 我得到了这些集合的文档Id。比如['xxx','yyy','zzz',…] 我的文档结构是 _id:"xxx",option1:{"op1":"value1","op2":"value2"},option2:"some value" 我想改变它,就像将对象转换为对象数组一样 _id:"xxx",opt
_id:"xxx",option1:{"op1":"value1","op2":"value2"},option2:"some value"
我想改变它,就像将对象转换为对象数组一样
_id:"xxx",option1:[{"op1":"value1","op2":"value2"},
{"op1":"value1","op2":"value2"}
],option2:"some value"
我能用upsert吗?如果是这样,怎么做?由于需要基于旧值创建字段的新值,因此应该使用如下查询检索每个文档
db.collection.find({ "_id" : { "in" : [<array of _id's>] } })
文档结构相当简单,因此我省略了输入从oldVal创建newVal的实际代码。因为它是一种嵌入式文档类型,您可以使用push查询
db.collectionname.update({_id:"xxx"},{$push:{option1:{"op1":"value1","op2":"value2"}}})
这将在嵌入式文档中创建文档。希望对您有所帮助
db.collectionname.update({_id:"xxx"},{$push:{option1:{"op1":"value1","op2":"value2"}}})