2016-02-26 36 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