サブドキュメントのフィールドの値を動的に更新する必要がある状況に遭遇しました。フィールドが存在する場合と存在しない場合があります。無ければmongoさんに作ってもらいたいです。
Teams
これは、特定のチームのメンバーを保存するために使用される、私のコレクションにあるドキュメントの例です。
{
_id : ObjectId('JKS78678923SDFD678'),
name : "Bob Lawblaw",
status : "admin",
options : {
one : "One",
two : "Two"
}
}
サブドキュメントの値を更新 (または作成) するために使用しているクエリ ( mongojsを mongo クライアントとして使用) は次のとおりです。options
var projectID = 'JKS78678923SDFD678';
var key = 'Three';
var value = 'Three';
Teams.findAndModify({
query: {
projectID:mongojs.ObjectId(projectID)
},
update: {
$set : { options[key] : value }
},
upsert: true,
multi: false,
new: true
},
function(error, result, lastErrorObject){
console.log(result);
});
しかし、値を「アップサート」することはできません。
この同様の質問も見つけましたが、その方法も機能しませんでした: Nodejs Mongo insert into subdocument - dynamic fieldname
助けてくれてありがとう。