nodejsネイティブドライバーを使用してmongo dbのドキュメントを更新しようとしています。
最初は次のように挿入されました:
matches {
_id:2001,
requester:"MITH",
accepter:"NIKK",
toss:"MITH",
bat:"NIKK",
scores:{"MITH":220},
status:0,
won:"MITH"
}
"NIKK":198
ここで、スコアオブジェクトに新しい要素を挿入して作成する必要があるドキュメントを更新する必要がありますscores:{"MITH":220,"NIKK":198}
問題は、キーが変数にしか入らないことです。そして私が更新するとき、それは更新されていません
以下は私が試しているコードです
var _jsonMatch = {status:4};
var _scorepush = {}
_scorepush[variablevalue] = 198; // variablevalue in reference above is NIKK
var data = {"$set": _jsonMatch,"$push": {"scores":_scorepush} }
mith.findAndModify({_id:mith.db.bson_serializer.ObjectID.createFromHexString(matchId)},
[],
data,
{ upsert: true,new:true },
function(error, match){
if( error ) callback(error);
else callback(null, match);
});
編集:
$addToSet
代わりに試してみまし$push
たが、データが未定義のコールバックで以下のエラーが発生しました。
{ [MongoError: 非配列に $addToSet 修飾子を適用できません] 名前: 'MongoError', lastErrorObject: { err: '非配列に $addToSet 修飾子を適用できません', コード: 12591, n: 0, connectionId: 56, ok : 1 }, errmsg: '$addToSet 修飾子を非配列に適用できません', ok: 0 } undefined