MongoDB & Meteor - 推入嵌套数组的查询不起作用,没有抛出错误
Posted
技术标签:
【中文标题】MongoDB & Meteor - 推入嵌套数组的查询不起作用,没有抛出错误【英文标题】:MongoDB & Meteor - Query to push into nested array does not work, no error thrown 【发布时间】:2015-03-04 11:04:17 【问题描述】:我正在尝试将数据推送到 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
);
【问题讨论】:
【参考方案1】:从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
对象。
【讨论】:
以上是关于MongoDB & Meteor - 推入嵌套数组的查询不起作用,没有抛出错误的主要内容,如果未能解决你的问题,请参考以下文章