0
我已經爲MongoDB中的對話創建了一個模式,其中消息作爲對象數組存儲在對話對象中。在大型數據集上的MongoDB子文檔查詢性能
Conversation {
company_id: { type:ObjectId, index: true },
messages: [{
_id: { type: ObjectId, index: true }
}]
}
有一個查詢我在地方,查找基於該COMPANY_ID以及陣列中發送的第一消息的一個_id會話(正被從應用程序的另一部分發送)。
Conversation.findOne({ company_id: c_id, messages._id: firstMessage })
從理論上講,如果一家公司有億間的對話,而且每個對話有1百級的消息,多少性能問題我將有子文檔的查詢,而不是我存儲的第一條消息在主Document中查詢id並查詢基礎對象?
Conversation {
company_id: { type:ObjectId, index: true },
firstMessage_id: { type:ObjectId, index: true },
messages: [{
_id: { type: ObjectId, index: true }
}]
}
Conversation.findOne({ company_id: c_id, firstMessage_id: firstMessage })
在此先感謝您的幫助。
馬里奧,謝謝你的回答。實際上,我將消息作爲單獨的集合與存儲在會話中的ID進行比較,但是我更想知道對象查找與子對象查找的查詢計算。 – Dfranc3373