Как мне обновить атрибут messageRead в моем объекте MongoDB?

#javascript #node.js #mongodb

#javascript #node.js #mongodb

Вопрос:

У меня есть следующий объект, хранящийся в MongoDB. Я отправляю messageRead атрибут внутри своего messages массива.

введите описание изображения здесь

Я пытался:

  collection.updateOne({ '_id': ObjectId(employeeID) }, 

                      { 
                        
                        "$set": { 
                  
                          "userObject.messages.message.message_uuid" : {  employeeMessageUpdateUUID, "messageRead" : employeeMessageRead } 
                      
                      
                      
                      }
  

но это не работает. Я нахожу объект, который ищу, с помощью _id , а затем пытаюсь найти message , используя message_uuid , однако messageRead атрибут не обновляется. Я явно использую неправильный запрос Mongo.. Как я должен $set выглядеть?

Ответ №1:

Для этого вы можете использовать $ operator:

 collection.updateOne(
  { 
    '_id': ObjectId(employeeID),
    'userObject.messages.message.message_uuid': employeeMessageUpdateUUID
  }, 
  {
    $set: { 'userObject.messages.$.message.messageRead': employeeMessageRead }
  }
)...