0

我有一个看起来像这样的文件:

{
  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 }
  ]
}
4

1 回答 1

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 );
});

只需更改集合名称、正确值等...

于 2013-08-18T08:39:17.103 回答