これを理解しました。
基本的に、次のように、クエリを実行する前に、更新しようとしているサブドキュメントの「プレースホルダー」オブジェクトを作成する必要があります。
var projectID = 'JKS78678923SDFD678';
var key = 'Three';
var value = 'Three';
var placeholder = {};
placeholder['options.' + key] = value;
Teams.findAndModify({
query: {
projectID:mongojs.ObjectId(projectID)
},
update: {
$set : placeholder
},
upsert: true,
multi: false,
new: true
},
function(error, result, lastErrorObject){
console.log(result);
});
これにより、既存のフィールドが更新され、フィールドと値のペアがまだ存在しない場合は作成されます。