使用addToSet在meteor和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:
"course_teach_list": [
{
"course_id": "qziRfZ8GFEW7j3QhL",
"class_id_list": [
"zx9ir93epdddricRM"
]
}
]
第三次更新有重复“course_id”:“qziRfZ8GFEW7j3QhL”。我该如何防止这种情况?我认为这是因为class_id_list不再是空的而且不一样,这就是为什么它更新重复的
"course_teach_list": [
{
"course_id": "qziRfZ8GFEW7j3QhL",
"class_id_list": [
"zx9ir93epdddricRM"
]
},
{
"course_id": "qziRfZ8GFEW7j3QhL",<--duplication! should not update!
"class_id_list": []
}
]
答案 0 :(得分:2)
第二个update
添加一个&#39;重复&#39; class_id_list
,因为class_id_list
不同。
如果update
中已存在course_id
,则可以使用阻止更新的查询对象限制course_teach_list
。示例代码如下,
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": [],
}
}}
)