我想更新mongodb中的数组元素。在mongodb shell中,这可以工作:
db.ipolls.update({_id:"5Qu9fXG84tNSZo7sv","players.label":"R1"},{$inc:{"players.$.score":1}});
但是当我在流星中运行时:
Ipolls.update( {_id:pollster,"players.label":notChosen.label},{$inc:{"players.$.comparisons":1}});
我收到错误:未捕获错误:不允许。不受信任的代码只能按ID更新文档。 [403]
是否可以在客户端运行此查询?
答案 0 :(得分:0)
在客户端上,您只能使用_id
字段作为选择器。您已使用{_id:pollster,"players.label":notChosen.label}
这是一个流星的事情,它只是为了让它更安全一点。从理论上讲,您可以创建一个奇怪的选择器,并从.allow
规则检查中获取信息,但事实并非如此。
首先查询文档,然后使用它来更新文档:
var doc_to_update = Ipolls.findOne({_id:pollster,"players.label":notChosen.label});
Ipolls.update( {_id: doc_to_update._id},{$inc:{"players.$.comparisons":1}});