サブドキュメント内で特定の条件が一致するネストされたmongodbドキュメントに新しいオブジェクトをプッシュします

アンキットカウシャル

NodejsとMongodbは初めてです。プロジェクトでメッセージチャット機能を構築しています。メッセージスキーマを使用しました。

これは私のユーザーモデルスキーマです:

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が一致するサブドキュメントにすべての新しいメッセージオブジェクトを追加したいと思います。だから、構造化されたフロントエンド(Angular)で簡単に使用できるように、
これを試しました:

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  }}
)

別のオブジェクトを作成しています。ここのサブドキュメントで「where」を使用する方法がわかりません。私はSQLのバックグラウンドから来ています。mongodb / mongooseのサブドキュメントで条件付きクエリを実行する方法を教えてください

アクリオン

これを試して:

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

$位置演算子を使用して挿入する必要があります。$ addToSetを利用することもできます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ