更新Meteor集合中的数组元素

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

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

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

然而,它一直在抛我一个“意想不到的”。 例外,指向我使用“东西**。** _ id”的行。 我遵循mongodb文档,所以任何机会meteor都有一些限制这个mongofunction?

在使用点符号访问数组的一个元素时,需要用引号将该字段用引号括起来,同时要注意位置$ 操作符将查询结果中的数组内容限制为只包含匹配查询文档的第一个元素。 因此,您的最终更新查询应该如下所示:

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

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