如何在Meteor方法中运行“$set”和“$pull”?

如何在Meteor方法中运行“$set”和“$pull”?,meteor,collections,Meteor,Collections,我想通过名为教室.删除的方法更新名为SMUProfiles的集合。我想从SMUProfiles内的两个位置拉出教室id,即一个位于教室内。所有者有一个代码数组,另一个位于教室内。学生 我已经成功地添加了$set部分,现在尝试添加$pull,但是$pull似乎不起作用 我们可以这样做$set和$pull吗 /*删除教室的方法*/ “教室.删除”(教室id){ 如果(!this.userId){ 抛出新流星。错误(“未授权”); } 教室。移除(教室id) 让ClassID=classicks.fi

我想通过名为
教室.删除
的方法更新名为
SMUProfiles
的集合。我想从
SMUProfiles
内的两个位置拉出
教室id
,即一个位于
教室内。所有者
有一个代码数组,另一个位于
教室内。学生

我已经成功地添加了$set部分,现在尝试添加$pull,但是
$pull
似乎不起作用

我们可以这样做
$set
$pull

/*删除教室的方法*/
“教室.删除”(教室id){
如果(!this.userId){
抛出新流星。错误(“未授权”);
}
教室。移除(教室id)
让ClassID=classicks.find({owner:this.userId}).fetch().map(函数(classicks){
返回教室。_id})
//console.log(ClassID);
smu.update({
所有者:this.userId,
}, {
$set:{
“教室.所有者”:ClassID
},
$pull:{
“教室.学生”:教室id
}
}
)
}

您试图在同一更新中的同一字段上执行
$set
$pull
——这两个操作冲突;所以不,你不能这样使用这些操作符

您可以轻松地将其分为两部分:

SMUProfiles.update(
  { owner: this.userId },
  { $set: { 'classrooms.owner': classids },
);
SMUProfiles.update(
  { owner: this.userId },
  { $pull: { 'classrooms.students': classroom_id },
);

请参见例如

什么确切定义了
不起作用
?是否有任何错误或意外行为?如果是这样的话,你期望什么行为?@Jankapunkt the
$pull
没有从
教室内的数组列表中拉出
教室id
。学生