2016-02-26 38 views
0

使用addToSet添加流星和mongoDB中的相同重复中的更新。使用addToSet添加流星和mongoDB中的相同重复更新

我的更新功能

let data = Meteor.users.update(Meteor.userId(), { 
    $addToSet: { 
     "course_teach_list": { 
      "course_id": courseId, 
      "class_id_list": [], 
     } 
    }} 
) 

首先更新:

"course_teach_list": [ 
    { 
     "course_id": "qziRfZ8GFEW7j3QhL", 
     "class_id_list": [] 
    }, 
    ] 

二更新到class_id_list: “qziRfZ8GFEW7j3QhL”:

具有复制 “COURSE_ID”
"course_teach_list": [ 
    { 
     "course_id": "qziRfZ8GFEW7j3QhL", 
     "class_id_list": [ 
     "zx9ir93epdddricRM" 
     ] 
    } 
    ] 

第三次更新。我如何防止这种情况?我认为它是因为class_id_list不是空了和它不一样的,这就是为什么它更新一个重复

"course_teach_list": [ 
    { 
     "course_id": "qziRfZ8GFEW7j3QhL", 
     "class_id_list": [ 
     "zx9ir93epdddricRM" 
     ] 
    }, 
    { 
     "course_id": "qziRfZ8GFEW7j3QhL",<--duplication! should not update! 
     "class_id_list": [] 
    } 
    ] 
+1

你想让你的文档在三个addToSets之后看起来像什么? –

+0

第三次更新它不应该去更新,因为它的重复。 same course_id – phongyewtong

回答

2

第二update添加一个“重复” class_id_list,因为class_id_list是不同的。

如果course_id已存在于course_teach_list中,您可以使用查询对象限制update以防止更新。示例代码如下,

let data = Meteor.users.update(
    {_id: Meteor.userId(), 'course_teach_list.course_id': {$ne: courseId}}, 
    {$addToSet: { 
     "course_teach_list": { 
      "course_id": courseId, 
      "class_id_list": [], 
     } 
    }} 
) 
+0

其作品谢谢! – phongyewtong