在这种情况下,我正在处理里程碑对象,一旦用户选中了一个,我想将此Collections项目中的complete更新为true(默认为false)
这是我的架构
milestones: {
type: Array,
optional: true
},
'milestones.$': {
type: Object
},
'milestones.$.name': {
type: String
},
'milestones.$.hours': {
type: Number
},
'milestones.$.complete': {
type: Boolean
}
如何为此编写$set
语句?
答案 0 :(得分:2)
你有一个对象数组,所以$elemMatch在这里做了诀窍。
Projects.update({_id:this._id},{milestones:{$elemMatch:{'milestones.$.name':this.name}},{$set:{'milestone.$.complete':value}}})
答案 1 :(得分:0)
感谢Aldeed,我找到了一个解决方案 - 需要在服务器端调用,否则它不会让更新发生。做:
Projects.update({_id:currentPostId, 'milestones.name':name}, {$set:{'milestones.$.complete':true}});
使用Meteor.call在客户端上调用该函数,并使用所有需要的参数。
答案 2 :(得分:-1)
根据您的架构,您有一个包含对象数组的对象。所以你应该这样写$set
:
{$set: {'milestone.$.complete':value}}
这将更新与查询对应的第一个数组元素。
如果您想了解有关Mongo中阵列更新的更多信息,可以找到here官方文档。