12

サブドキュメントのフィールドの値を動的に更新する必要がある状況に遭遇しました。フィールドが存在する場合と存在しない場合があります。無ければ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

助けてくれてありがとう。

4

1 に答える 1