コレクション内の配列を更新するために$in
andを使用しています。$addToSet
この種のドキュメントがあるとします。
{
_id: objectId(1), //this is just an example id
names: ['harry', 'hermione']
},
{
_id: objectId(2),
names: ['ron']
},
{
_id: objectId(3),
names: ['dumbledoor']
}
このドキュメントをすべて更新して、ID の配列を取得したい
var arr_ids = [1, 2];
このように配列を使用しmap
ます。
var ids = arr_ids.map(function(id) { return mongoose.Types.ObjectId(id); });
コレクション内のすべてのドキュメントを更新するには。
db.update( { _id: { $in: ids } }, { $addToSet: { name : 'draco' } },
function(err, results) {
if(err) console.log(err);
console.log(results);
}
);
andを使用する$in
と$addToSet
、ドキュメントが機能して更新されますが、最後のドキュメントのみが更新されます。
{
_id: objectId(1), //this is just an example id
names: ['harry', 'hermione']
},
{
_id: objectId(2),
names: ['ron', 'draco'] // it only update this document.
},
{
_id: objectId(3),
names: ['dumbledoor']
}
どうしてか分かりません。個別に更新するためだけに for ループを作成したくありませんが、それが私の最後の手段のようです。私を助けてください。ありがとう!