Mongodb query.update方法不更新数组

时间:2016-04-22 17:45:16

标签: mongodb mongoose promise

以前我曾经尝试过(使用猫鼬和承诺):

var cursor = User.find({email: from.address, token: tokenMatches[1]}); 然后

return cursor.update(
    {'votes.title': b},
    {'$set': { 'votes.$.category': a }}
).then(function (result) {
    if(result.nModified == 0) {
        return cursor.update({}, {'$push': { votes: { category: a, title: b }}}).then(function (res) {
            ServerLog('updatePush', res);
            return res;
        });
    }
});

但是第一次和第二次调用它总是返回nModified = 0。直到我发现游标对象实际上没有更新功能。那为什么会这样呢?为什么它没有抛出异常?

1 个答案:

答案 0 :(得分:2)

Model.find返回Query个对象,而不是光标。 Query 具有update方法,可让您将查询作为更新操作执行。