mongodb将字段的数据类型从映射更新为数组
如何将文档中字段的数据类型从映射更新为数组。 假设以下文档:mongodb将字段的数据类型从映射更新为数组,mongodb,mongodb-query,Mongodb,Mongodb Query,如何将文档中字段的数据类型从映射更新为数组。 假设以下文档: { "_id" : "someUniqueId:1234567890", "field1" : { "id" : "field1_id1", "type" : "field1_type1" }, "field2" : "field2_value", "field3" : 1680 } 我想更新字段1,使其具有以下值: "field1" : [{
{
"_id" : "someUniqueId:1234567890",
"field1" : {
"id" : "field1_id1",
"type" : "field1_type1"
},
"field2" : "field2_value",
"field3" : 1680
}
我想更新字段1,使其具有以下值:
"field1" : [{
"id" : "field1_id1",
"type" : "field1_type1"
}]
我尝试过以下方法:
db.getCollection('collection1').find({_id: "someUniqueId:1234567890"}).forEach(function(result) {
db.getCollection('collection1').update({_id: result._id}, { $insert: { field1: [{"field1.id": result.field1.id, "field1.type": result.field1.type}] } })
});
另外,我尝试了$push和$addToSet来代替$insert,但没有成功。我们可以使用它来获得结果
下面的查询进行更改
db.collection_name.update(
{},
[{ $set: { field1: ["$field1"] } }],
{ multi: true }
);
查找部分-{}
我们在这里没有给出选择要更新的特定文档的任何条件,因此更新适用于集合中的所有文档,如果我们想限制更新,请提供选择匹配文档的条件
更新部分-[{$set:{field1:[“$field1”]}}]
将文档放入数组的工作
multi:true
标志设置为true,以便我们可以更新多个文档
请注意-只在集合中运行一次查询,如果我们多次运行,那么我们将为field1使用嵌套数组
希望能有帮助 为了避免嵌套数组,您应该添加条件
{field1:{$not:{$type:“array”}}
,而不是{}
条件{“field1.0”:{$exists:false}
也可以工作,但{field1:{$type:“obejct”}
不工作。