Выдвиньте новый объект во вложенный документ mongodb, где определенное условие соответствует вложенному документу. - PullRequest
0 голосов
/ 22 октября 2018

Я новичок в Нодейс и Монгодб.Я создаю функциональность Message Chat в своем проекте.Я закончил со схемой сообщений.

Это моя схема модели пользователя:

var UserSchema = new mongoose.Schema({

    name : {
       type     : String
    },
    email : {
       type : String
   },
   password : {
       type     : String
   },
   chats : [{
        chatId : String,
        messages : [{
            type  : mongoose.Schema.Types.ObjectId,
            ref   : 'Message'
        }]
    }]  
});

Я хочу добавить все новые объекты сообщений в поддокумент, где совпадает chatId.Итак, что я могу легко использовать его на переднем конце (который является угловым) со структурированным
Я пробовал это:

var msg = new Message({
    senderId : req.user._id,
    to       : toUser,
    from     : user,
    message  : req.body.msg,
    datetime : new Date()
})

msg.save();

const chatFr = await User.findOneAndUpdate(
        { 'chats.chatId' :  req.user._id },
        { $push : { 'chats' : msg  }}
)

Это создание отдельного объекта. Я не знаю, как использовать«где» в поддокументах здесь.Я пришел из Sql фона.Помогите пожалуйста как выполнить условные запросы в под-документах в mongodb / mongoose

1 Ответ

0 голосов
/ 23 октября 2018

Попробуйте это:

await User.findOneAndUpdate(
  { 'chats.chatId' :  req.user._id },
  { $addToSet: { 'chats.$.messages' : msg  }}}
)

Вставить нужно с помощью оператора $ position .Вы также можете использовать $ addToSet .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...