[英]How do I find a mongoDB document and a second one based on its id as property of the first (like an inner join)
我正在嘗試在 node.js-expres 設置中使用 mongoose 獲取 model“對話”的所有 mongodb 文檔。 我使用 .find() 方法成功地做到了這一點。 但是現在我想根據會話 model 的屬性給出的“用戶”文檔 ID 獲取會話文檔和相應的“用戶”文檔,我想同時獲取它們object。
所以一個草圖:對話 model 有“_id”、“sender_id”和“recipient_id”。 一個用戶有“first_name”、“last_name”、“email”和“password_hash”。
我想獲取一個 object,其中包含所有屬性以及 _id 等於接收者 ID 的用戶的 _id、名字、姓氏、email 和密碼。
但我似乎無法在互聯網上找到這個。
如果在對話 Model 中,recipient_id 的類型為 ObjectId 並引用 User,那么您可以使用populate()
function 自動獲取引用的文檔。
假設您的用戶 Model 被稱為用戶,那么在對話模式中,您應該有:
recipient_id: { type: Schema.Types.ObjectId, ref: 'User' }
然后在您的查找請求中,您可以添加.populate()
:
Conversations.find().populate("recipient_id")
返回的文檔應包含接收者 ID 中的整個關聯用戶文檔。
對於像這樣更復雜的請求,您還可以查看$lookup (aggregation) 。 填充應該足以滿足您的情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.