更新Meteor中集合中的数组元素

时间:2015-05-23 14:53:51

标签: javascript node.js mongodb meteor

我正在尝试在流星应用程序中的mongodb集合中查找和更新数组中的元素。

数组中的每个元素都是一个具有“_id”属性的对象,所以我使用的是mongo的'$'指针:

Collection.update({things._id: currentThingId},{$set: {things.$.value: aGivenValue}});

然而,它一直让我“意外”。异常,指向我使用“东西**。** _ id”的行。我遵循了mongodb文档,所以任何机会meteor都有这个mongo功能的限制吗?

2 个答案:

答案 0 :(得分:4)

如果数组中的每个元素都是一个带有" _id"的对象。属性,为什么不使用 Collection.update({_id: currentThingId},{$set:{fieldToSet: aGivenValue}}); 其中fieldToSet是您要将aGivenValue设置为的属性的名称。

答案 1 :(得分:4)

当使用 dot notation 通过从零开始的索引位置访问数组元素时,需要用引号将字段括起来,记住{{3}从查询结果限制数组的内容,以仅包含与查询文档匹配的第一个元素。因此,您的最终更新查询应如下所示:

Collection.update({"things._id": currentThingId},{$set: {"things.$.value": aGivenValue}});