我正在尝试使用 nodejs 本机驱动程序更新 mongo db 中的文档。
最初它是这样插入的:
matches {
_id:2001,
requester:"MITH",
accepter:"NIKK",
toss:"MITH",
bat:"NIKK",
scores:{"MITH":220},
status:0,
won:"MITH"
}
现在我需要更新文档,我需要在其中插入一个新元素"NIKK":198
到 score 对象以使其成为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: Cannot apply $addToSet modifier to non-array] name: 'MongoError', lastErrorObject: { err: 'Cannot apply $addToSet modifier to non-array', code: 12591, n: 0, connectionId: 56, ok : 1 }, errmsg: 'Cannot apply $addToSet modifier to non-array', ok: 0 } undefined