微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Javascript-MongoDB / Mongoose-仅当特定字段唯一时,才将对象添加到对象数组

因此,我在MongoDB文档中有一个嵌套的对象数组,并且仅当某个字段(在这种情况下为eventId)唯一时,我才想向该数组添加一个新对象.我的问题与this post非常相似,只是我似乎无法获得适用于我的情况的解决方案.

这是文档(usermodel)的样子:

{
  "portal" : {
    "events" : [ 
      {
        "important" : false,
        "completed" : false,
        "_id" : ObjectId("5c0c2a93bb49c91ef8de0b21"),
        "eventId" : "5bec4a7361853025400ee9e9",
        "user_notes" : "My event note"
      },
      ...and so on
    ]
  }
}

这是我(迄今未成功)的猫鼬手术:

usermodel.findByIdAndUpdate(
  userId,
  { "portal.events.eventId": { $ne: req.body.eventId } },
  { $addToSet: { "portal.events": req.body } },
  { new: true }
);

基本上,我试图使用’$ne’检查该字段是否唯一,然后使用’$addToSet'(或’$push’,在这种情况下我认为它们在功能上是等效的)添加新对象.

有人能指出我正确的方向吗?

干杯,
加布

解决方法:

如果您在方法上查看documentation,将会看到传递的参数顺序不正确.

findByIdAndUpdate(id, update, options, callback)

我将改用update,并使用您的id和portal.events.eventId“:{$ne:req.body.eventId}组成部分,然后是$addToSet:{” portal.events“:req.body}

这些行中的一些:

usermodel.update(
  { 
     "_id": mongoose.Types.ObjectId(userId), 
     "portal.events.eventId": { $ne: req.body.eventId }
  },
  { $addToSet: { "portal.events": req.body } },
  { new: true }
);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐