类似于这个 question
Barrowing数据集,我有类似的东西:
{
'user_id':'{1231mjnD-32JIjn-3213}',
'name':'John',
'campaigns':
[
{
'campaign_id':3221,
'start_date':'12-01-2012',
},
{
'campaign_id':3222,
'start_date':'13-01-2012',
}
]
}
我想在
campaigns
中添加一个新键,如下所示:{
'user_id':'{1231mjnD-32JIjn-3213}',
'name':'John',
'campaigns':
[
{
'campaign_id':3221,
'start_date':'12-01-2012',
'worker_id': '00000'
},
{
'campaign_id':3222,
'start_date':'13-01-2012',
'worker_id': '00000'
}
]
}
如何
insert/update
一个新键到一个对象数组中?我想在数组内的每个对象中添加一个新键,默认值为
00000
。我试过了:
db.test.update({}, {$set: {'campaigns.worker_id': 00000}}, true, true)
db.test.update({}, {$set: {campaigns: {worker_id': 00000}}}, true, true)
有什么建议么?
最佳答案
我假设此操作将发生一次,因此您可以使用脚本来处理它:
var docs = db.test.find();
for(var i in docs) {
var document = docs[i];
for(var j in document.campaigns) {
var campaign = document.campaigns[j];
campaign.worker_id = '00000';
}
db.test.save(document);
}
该脚本将遍历您集合中的所有文档,然后遍历每个文档中的所有事件,设置 *worker_id* 属性。
最后,每个文档都被持久化。