簡體   English   中英

在貓鼬中查詢子文檔的子文檔

[英]Querying sub document of sub document in mongoose

我想通過檢查chatSchema的“ receiver”和userSchema的“ username”,將數據保存在chatSchema的子文檔“ messageSchema”中。

就像偽代碼:-

if(userSchema.username == "Rahul" && userSchema.chatSchema.receiver){
then save the data in chatSchema.message;
}

這是我的架構:

var messageSchema = mongoose.Schema({
    messageId: {type: String, unique: true, required: true},
    created: {type: Date, default: Date.now},
    messageContent: String
});

var chatSchema = mongoose.Schema({
    message: [messageSchema],
    receiver: {type: String, required: true}
});

var userSchema = mongoose.Schema({
    username: { type: String, unique: true, required: true },
    name: { type: String, required: true },
    email: { type: String, required: true, unique: true },
    password: { type: String, required: true },
    token: { type: String, required: false },
    conversations: [chatSchema]
});

請建議應該使用什么代碼來保存消息數據。 嘗試以下一種無效的方法。

User.findOneAndUpdate({username: "rahul", "conversations.receiver": data.receiver },{$push: {"conversations.message": message}});

我認為您需要使用$elemMatch而不是點符號來匹配數組中的屬性。 嘗試這個:

User.findOneAndUpdate(
  {
    username: "rahul",
    conversations: {
      $elemMatch: { receiver: data.receiver }
    }
  },
  // or whatever your update is
 {$push: {"conversations.message": message}
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM