0
私はMongooseについてよく知っていますが、貧弱な文書は役立ちません(検索や関数のリスト、 ..)。Mongoose - 文書を検索し、サブ文書のいくつかのフィールドを更新します
私は会社を表し文書を持っている、とユーザーを表し、サブ文書:
{
"_id": "57ffa47f5b70f90831212348",
"name": "mycompany",
"address": "...",
"phone": "...",
"users": [
{
"_id": "57ffa47f5b70f90831212347",
"username": "alpha",
"name": "myname",
"surname": "mysurname",
"password": "..."
}
]
}
私は特定の下位ドキュメントを見つけて、ちょうどいくつかのフィールド更新する(名前、姓、パスワードを、...)フロントエンドから渡されます。
"company_shortname": "CMPNY",
"company_id": "57ffa47f5b70f90831212348",
"user": {
"id_access_level": 0,
"surname": "ltd",
"name": "mycompany",
"username": "mycompanyusername",
"_id": "57ffa47f5b70f90831212347",
"password": "..."
}
}
私が取得したいことは、編集subdocサブを見つけることである(会社含まれています。私はreq.body
を受け取る
は、ログインしているユーザーが含まれています(つまり、req.body.name)とreq.user
編集したフィールドが含まれていますこのサブクォートは常にログインしているユーザーと同じです)、渡された更新データ、および保存します。
このanswerを使用して、私が試した:
Company.find({'_id': req.user.company_id}).select('name').exec(
function(err, company) {
if (err) res.status(500).send(err);
var partialUpdate = req.body;
var set = {};
for (var field in partialUpdate) {
set['users.$.' + field] = partialUpdate[field];
}
company.update({_id: req.user._id, "users._id": req.body._id},
{$set: set},
function(err, numAffected) {
console.log('Number of users edited: ' +JSON.stringify(numAffected,null,4));
});
});
が、私は得ることができない、それは...任意のアイデアを仕事に?