到目前为止,我已设法在profile数组中添加一个新元素。我的目标是添加一个新的部门并从最近的个人资料中克隆现有的详细信息,例如职称。我无法弄清楚如何克隆它,我尝试job: "$profile.job", job: $profile.job
或者甚至可能?
db.getCollection('employees').update(
{ "profile.depId": ObjectId('5aaa53f6207dc50c53ae4967'), "companyId": ObjectId('5aa6069648ac9b1668dfc2a0') },
{ "$push": { "profile": { $each: [{ depName: "Test", job: "$profile.job" }], $position: 0 } } },
{ "multi": true }
)
或者我必须做两个查询来实现这个目标吗?
答案 0 :(得分:0)
我不认为MongoDB会允许您使用现有字段来创建新字段。相反,请尝试使用forEach
获取光标并更新每个文档:
db.employees.find({
"profile.depId":ObjectId('5aaa53f6207dc50c53ae4967'),
"companyId":ObjectId('5aa6069648ac9b1668dfc2a0')
}).snapshot().forEach(
function (empDoc){
db.employees.update( {
_id:empDoc._id
},
{
"$push":{
"profile":{
$each:[
{
depName:"Test",
job:empDoc.profile.jo"
}
],
$position:0
}
}
} );
});