Как обновить поле объекта в массиве с помощью Mongoose - PullRequest
0 голосов
/ 10 марта 2020

Мне нужно найти комнату по id и обновить полученное поле до true где идентификатор пользователя равно xx .

Документ находится здесь:

{
    "_id" : ObjectId("5e5d0d870fc69641a41a3c65"),
    "users" : [ 
        ObjectId("5e57d64d92cc878760086980"), 
        ObjectId("5e57d64592cc87876008697e")
    ],
    "messages" : [ 
        {
            "_id" : ObjectId("5e67834b6c8b2d356a4ad9fd"),
            "text" : "Hello",
            "user" : ObjectId("5e57d64d92cc878760086980"),
            "createdAt" : ISODate("2020-03-10T12:08:43.006Z"),
            "sent" : true,
            "received" : false
        }, 
        {
            "_id" : ObjectId("5e6783076c8b2d356a4ad9fc"),
            "text" : "Hello",
            "user" : ObjectId("5e57d64d92cc878760086980"),
            "createdAt" : ISODate("2020-03-10T12:07:35.544Z"),
            "sent" : true,
            "received" : true
        }
    ],
    "createdAt" : ISODate("2020-03-02T13:43:35.522Z"),
    "updatedAt" : ISODate("2020-03-10T12:08:43.006Z"),
    "unReads" : {
        "5e57d64d92cc878760086980" : 1,
        "5e57d64592cc87876008697e" : 5
    },
    "__v" : 0
}

**** Похоже, ваше сообщение в основном кодовое; пожалуйста, добавьте больше деталей. ****

1 Ответ

1 голос
/ 10 марта 2020

Вам нужно позиционный оператор $ :

Model.update({_id: ObjectId("5e5d0d870fc69641a41a3c65"), "messages.user": ObjectId("5e57d64d92cc878760086980")}, { $set: { "messages.$.received": true } })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...