我有一个文档的2个子属性,并希望将所有属性从一个移动到另一个,但是后来我想要删除空属性。
现在我知道$ rename命令可用于将每个属性从一个地方移动到另一个地方,但我也希望空对象被销毁,但只有在移动之后。
那怎么做呢?
以下是一个例子:
{
_id : ObjectID,
firstProperty : {
value0 : 1,
value1 : 2
},
secondProp: {
value5 : 3,
value6 : 4
}
}
然后在处理之后:
{
_id : ObjectID,
firstProperty : {
value0 : 1,
value1 : 2,
value5 : 3,
value6 : 4
}
}
答案 0 :(得分:0)
以下是如何在mongoshell中执行此操作,我希望将其转换为node.js并不困难,因为这是相同的js。
您的文件:
{
_id : 1,
firstProperty : {
value0 : 1,
value1 : 2
},
secondProp: {
value5 : 3,
value6 : 4
}
}
从第二个属性复制信息:
var a = db.b.findOne({_id : 1},{secondProp : 1})
准备一个对象以使用update进行设置:
var setObj = {};
for(var i in a.firstProperty){
setObj['firstProperty.'+i] = a.secondProp[i];
}
并使用$ set,$ unset
进行更新db.b.update(
{_id : 1},
{$unset : {secondProp : 1}, $set : setObj }
)