我的文档具有以下结构:
{
"Name": "Test",
"FieldsCollection": [{
"GroupName": "Group",
"Fields": [{
"FieldName": "ABC",
"Fields": {
"item1": "value1",
"item2": "value2"
}
}]
}]
}
我需要将其更改为如下:
{
"Name": "Test",
"FieldsCollection": [{
"GroupName": "Group",
"Fields": [{
"FieldName": "ABC",
"item1": "value1",
"item2": "value2"
}]
}]
}
假设"item1": "value1","item2": "value2"
我的集合中所有文档的值都是恒定的,我想我可以删除"FieldsCollection.Fields.Fields"
并添加"item1": "value1","item2": "value2"
我尝试了以下查询:
db.getCollection('Devices').update(
{"FieldsCollection.Fields.FieldName":"ABC"},
{$unset: {"FieldsCollection.Fields.Fields":1}},
{multi:true}
)
但它没有用。
我可以使用什么查询来执行此更改?
在 3.6 中使用位置$[all]
(第一级)和位置[<identifier>]
(第二级)
就像是
db.getCollection('Devices').update(
{"FieldsCollection.Fields.FieldName":"ABC"},
{$unset: {"FieldsCollection.$[].Fields.$[f].Fields":1},
$set:{"FieldsCollection.$[].Fields.$[f].item1":"value1",
"FieldsCollection.$[].Fields.$[f].item2":"value2"}
},
{arrayFilters: [{ "f.FieldName":"ABC"} ],multi:true }
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句