【发布时间】:2019-05-10 06:19:49
【问题描述】:
所以我的 MongoDB 文档中有一个嵌套的对象数组,并且我想仅在某个字段(在本例中为 eventId)是唯一的情况下才向该数组添加一个新对象。我的问题与this post 非常相似,只是我似乎无法让该解决方案适用于我的情况。
这是文档 (UserModel) 的样子:
{
"portal" : {
"events" : [
{
"important" : false,
"completed" : false,
"_id" : ObjectId("5c0c2a93bb49c91ef8de0b21"),
"eventId" : "5bec4a7361853025400ee9e9",
"user_notes" : "My event note"
},
...and so on
]
}
}
这是我的(到目前为止不成功的)Mongoose 操作:
UserModel.findByIdAndUpdate(
userId,
{ "portal.events.eventId": { $ne: req.body.eventId } },
{ $addToSet: { "portal.events": req.body } },
{ new: true }
);
基本上我正在尝试使用'$ne' 来检查该字段是否唯一,然后使用'$addToSet'(或'$push',我相信在这种情况下它们在功能上是等效的)来添加新对象。
谁能指出我正确的方向?
干杯, 加布
【问题讨论】:
-
为什么不使用 findOneAndUpdate 并在查询中包含
$ne: req.body.eventId?另外,findByIdAndUpdate 只接受 3 个参数(如果是 4,最后一个将是回调),而您正在发送 4 个参数
标签: javascript node.js mongodb mongoose subdocument