Javascript mongodb updateshell命令应该是什么

Javascript mongodb updateshell命令应该是什么,javascript,mongodb,mongodb-query,Javascript,Mongodb,Mongodb Query,这是我收藏的一份文件 { "_id": ObjectId("55e86e98f493590878bb45d7"), "KIDS_M_0_2" : "", "KIDS_F_0_2" : "", "KIDS_U_0_2" : "Y", "KIDS_M_3_5" : "", "KIDS_F_3_5" : "", "KIDS_U_3_5" : "Y", "KIDS_M_6_10" : "", "KIDS_F_6_10" : "

这是我收藏的一份文件

{   
    "_id": ObjectId("55e86e98f493590878bb45d7"),
    "KIDS_M_0_2" : "",
    "KIDS_F_0_2" : "",
    "KIDS_U_0_2" : "Y",
    "KIDS_M_3_5" : "",
    "KIDS_F_3_5" : "",
    "KIDS_U_3_5" : "Y",
    "KIDS_M_6_10" : "",
    "KIDS_F_6_10" : "",
    "KIDS_U_6_10" : "",
    "KIDS_M_11_15" : "",
    "KIDS_F_11_15" : "",
    "KIDS_U_11_15" : "",
    "KIDS_M_16_17" : "",
    "KIDS_F_16_17" : "",
    "KIDS_U_16_17" : "Y"
}
我希望这样

{
    "_id":ObjectId("55e86e98f493590878bb45d7"),
    "KIDS": { "KIDS_M_0_2" : "",
    "KIDS_F_0_2" : "",
    "KIDS_U_0_2" : "Y",
    "KIDS_M_3_5" : "",
    "KIDS_F_3_5" : "",
    "KIDS_U_3_5" : "Y",
    "KIDS_M_6_10" : "",
    "KIDS_F_6_10" : "",
    "KIDS_U_6_10" : "",
    "KIDS_M_11_15" : "",
    "KIDS_F_11_15" : "",
    "KIDS_U_11_15" : "",
    "KIDS_M_16_17" : "",
    "KIDS_F_16_17" : "",
    "KIDS_U_16_17" : "Y"
}

这可以通过shell完成吗?我的更新命令应该是什么

实际上,您需要的不仅仅是简单的命令

您需要循环使用该方法返回的游标,然后使用字段的名称及其值创建一个新对象“kids”。下一步要做的是所有字段,并使用操作符创建新字段。当然,要做到这一点,您需要使用1个操作以获得最高效率

var bulk=db.collection.initializeUnderedBulkop();
var计数=0;
db.collection.find().forEach(函数(doc){
var={};
用于(输入文档){
if(key!='\u id'&&Object.prototype.hasOwnProperty.call(doc,key)){
儿童[钥匙]=医生[钥匙];
var unset={};
取消设置[键]='';
bulk.find({'u-id':doc.u-id}).updateOne({'unset':unset});
计数++;
}        
bulk.find({''u-id':doc.u-id}).updateOne({'$set':{'KIDS':KIDS});
如果(计数%500==0){
bulk.execute();
bulk=db.collection.initializeUnderedBulkop();
}
})
如果(计数>0)
bulk.execute()
执行此操作后,您的文档如下所示:

{
“_id”:ObjectId(“567d99bcbc08a0817a1b06dd”),
“孩子”:{
“KIDS_M_0_2”:“,
“儿童2”:“,
“孩子们”\U\U 0\U 2:“Y”,
“儿童3岁5岁”:“,
“儿童”3“5”:“,
“儿童3岁5岁”:“Y”,
“儿童6岁10岁”:“,
“儿童”6“10”:“,
“儿童6岁10岁”:“,
“KIDS_M_11_15”:“,
“儿童11岁以下”:“,
“儿童”11“15”:“儿童”,
“KIDS_M_16_17”:“,
“儿童16岁17岁”:“,
“儿童16岁17岁”:“Y”
}
}

MongoDB 3.2
Bulk()

var操作=[];
db.collection.find().forEach(函数(doc){
var={};
对于(文档中的var键){
如果(!key.startsWith(''u id')&&Object.prototype.hasOwnProperty.call(doc,key)){
儿童[钥匙]=医生[钥匙];
var unset={};
取消设置[键]='';
操作.推送(
{'updateOne':
{ 
'filter':{'u id':doc.\u id},
'update':{'$unset':unset}
}             
}         
);    
}     
操作.推送(
{'updateOne':
{ 
'filter':{'u id':doc.\u id},
'update':{'$set':{'KIDS':KIDS}
}         
}     
); 
} 
push({'ordered':true});
})
db.collection.bulkWrite(操作)

<P>1。API在版本2.6中是新的。因此,如果您在旧版本

上,则应该考虑升级。