更新或添加子文档

时间:2013-09-19 06:53:36

标签: node.js mongodb mongojs

我在MongoDB中遇到了非常奇怪的问题,我想要的是如果条件匹配则查询更新文档,如果不匹配则创建新的(upsert)。

问题: 我从回调中得到了正确的结果,因为这会返回新插入的文档。但是出现的 查询从未插入数据库

我认为这是因为$ set部分,正在寻找数组,但这必须是对象:

boards [
  // Looks for element 48 and inserts there
] 

{ '$set': 
   { 'boards.48.acl': 'ReadWrite',
     'boards.48.status': 'goal' } }

以下是查询:

// the 11 is example input
var scoreKey  = util.format('scores.' + 11),
    aclKey    = scoreKey + '.acl',
    statusKey = scoreKey + '.status',
    setQuery  = {
        $set: { }
    };

setQuery['$set'][aclKey] = acl;
setQuery['$set'][statusKey] = status;

db.sessions.findAndModify({
    query: { '_id': sid },
    update: setQuery,
    upsert: true,
    new: true
}, function (err, res) {
    if (err) return cb(err);
    else {
        console.log(res);
        return cb(null, res);
    }
});

//更新

好吧,似乎所有对数据库的更改都是静默失败的,所以查询似乎是正确的。

0 个答案:

没有答案