MongoDB & Meteor - 推入嵌套数组的查询不起作用,没有抛出错误

MongoDB & Meteor - Query to push into nested array does not work, no error thrown

我正在尝试将数据推送到 Mongo collection 内的嵌套数组中。我已经按照这里的 Mongo 文档 http://docs.mongodb.org/manual/reference/operator/update/positional/,但没有任何运气推入数组。没有错误或异常被抛出并且语法 看起来 正确...

在这个例子中,我试图通过将一个新字符串推入它的 idArr 数组来更新标题为 'Board One'buyer.boards .我的查询有问题吗?

Mongo Collection

// User Document from Meteor.users Collection:
{
    _id: 'userIdqwerty',
    buyer: {
        boards: [
            {
                title: 'Board One',
                idArr: ['id123', 'id456', 'id678']
            },
            {
                title: 'Board Two',
                idArr: ['idABC']
            },
            {
                title: 'Board Three',
                idArr: ['id12345678', 'idqwertyuu']
            },
        ]
    };
}

Javascript

var options = {
    boardTitle: 'Board One',
    newId: 'idZjodFsp',
    userId: 'userIdqwerty'
};

Meteor.users.update(
    { 
        _id:options.userId, 
        'buyer.boards.$.title':options.boardTitle 
    },
    { $push: { 
        'buyer.boards.$.idArr':options.newId }
    }
);

update 函数的 query 参数中删除位置运算符 ($)。

Meteor.users.update(
    { 
        _id:options.userId, 
        'buyer.boards.title':options.boardTitle 
    },
    { $push: { 
        'buyer.boards.$.idArr':options.newId }
    }
);

来自文档:

db.collection.update(
   { <array>: value ... },
   { <update operator>: { "<array>.$" : value } }
)

位置运算符应该用在update参数中,不能用在query参数中。这仅更新具有匹配 title.

的第一个 boards 对象