Итак, у меня есть вложенный массив объектов в моем документе MongoDB, и я хотел бы добавить новый объект в массив, только если определенное поле (в данном случае, eventId) уникально.Мой вопрос очень похож на этот пост , только я не могу заставить это решение работать в моем случае.
Вот как выглядят документы (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'
, я считаю, что они функционально эквивалентны в этом случае) для добавления нового объекта.
Может ли кто-нибудь указать мне правильное направление?
Приветствия, Гейб