【发布时间】:2019-09-18 17:56:33
【问题描述】:
MongoDB 文档的当前状态:
// Team document
{
"_id" : ObjectId("5cc6d4c8c3faa84f28e5fe1d"),
"teamMembers" : [
{
"player" : ObjectId("5ba24b8594a05f3788980a11"),
"_id" : ObjectId("5cc6d4c8c3faa84f28e5fe1e")
}
],
"createdDateTime" : ISODate("2019-04-29T10:41:12.836Z"),
"__v" : 0
}
我有以下请求数据需要添加到上述文档的 teamMembers 属性中:
{
"teamId": "5cc6d4c8c3faa84f28e5fe1d",
"playerList": [
{
"player": "5ba24b8594a05f3788980a11"
},
{
"player": "5ba38151e1baf00264786891"
},
{
"player": "5ba38151e1baf0026478688c"
}
]
}
我尝试了以下moongoose代码:
Team.update({ '_id': req.body.teamId }, {
$addToSet: {
'teamMembers': { $each: req.body.playerList }
}
}, function (err) {
if (err) {
/* error response */
}
else {
/* success response */
}
});
问题:如果玩家已经存在于数组中,则不应将其添加到teamMembers 数组中,但在我的情况下,它会添加玩家的重复记录。因此,在上述情况下,player:5ba24b8594a05f3788980a11 已经存在于 MongoDB 文档中,因此不应添加它,但应将剩余的两个玩家添加到 teamMembers 数组中
【问题讨论】:
-
这是因为您没有将“_id”(应与现有文档中的相同)字段与您的玩家 ID 一起添加
-
是的,它是自动生成的,因此无法识别为我们正在推送的同一元素。但是我希望如何处理它@AnirudhSimha
标签: node.js mongodb mongoose nosql