我的文件看起来像这样:
{
name: "Name1",
values: [
{ type: "type1", value: 123 },
{ type: "type2", value: 456 },
{ type: "type3", value: 666 },
{ type: "type3", value: 777 }
]
}
他们中有很多人。如何更新所有文档,以便每个文档只有一个values.type3
大于另一个文档:
{
name: "Name1",
values: [
{ type: "type1", value: 123 },
{ type: "type2", value: 456 },
{ type: "type3", value: 777 }
]
}
答案 0 :(得分:2)
如果数据集不是太大,可以从mongo shell运行:
db.collection.find({ 'values.type': 'type3' }).forEach( function(doc) {
var values = [];
var tmp = { value: 0 };
for( var v in doc.values )
{
v = doc.values[v];
if ( v.type !== "type3" )
values.push( v );
else if ( v.value > tmp.value )
tmp = v;
}
values.push( tmp );
doc.values = values;
db.collection.save( doc );
});
只需更改集合名称,正确值等......