我需要运行迁移脚本,以将值(每个文档中已有)插入到同一文档的数组中。必须对集合中的每个文档执行此操作(无需选择查询)
如何更改此:
{
"_id": ObjectID("5649a7f1184ebc59094bd8b3"),
"alternativeOrganizer": ObjectID("5649a7f1184ebc59094bd8b1"),
"myArray": []
}
变成这个:
{
"_id": ObjectID("5649a7f1184ebc59094bd8b3"),
"alternativeOrganizer": ObjectID("5649a7f1184ebc59094bd8b3"),
"myArray": [
ObjectID("5649a7f1184ebc59094bd8b3")
]
}
提前致谢。
我将使用forEach和$ addToSet,以便脚本可以重新执行。
除非该值已存在,否则$ addToSet运算符会向该数组添加一个值,在这种情况下,$ addToSet对该数组不执行任何操作。
db.collectionname.find().forEach(function(results)
{
print( "Id: " + results._id );
db.collectionname.update( {_id : results._id},
{$addToSet : {myArray : results._id}})
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句