我正在尝试将数据推送到 Mongo 集合内的嵌套数组中。我在这里遵循了 Mongo 文档 http://docs.mongodb.org/manual/reference/operator/update/positional/ ,但没有运气进入数组。没有错误或异常被抛出,语法看起来是正确的...
在这个例子中,我尝试通过将新字符串插入 idArr
来更新标题为 'Board One' 的 buyer.boards
> 数组。我的查询有问题吗?
Mongo 合集
// 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
参数中应not。这只会更新具有匹配的 title
的第一个 boards
对象。
关于javascript - MongoDB 和 Meteor - 插入嵌套数组的查询不起作用,没有抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27804441/