我們一直在使用MongoDB一段時間了,並且有一件事我只是無法環繞我的頭。比方說,我有一個讓用戶的AA集合觀察名單或喜愛的物品清單如下:MongoDB關係數據結構與_id的數組
usersCollection = [
{
_id: 1,
name: "Rob",
itemWatchList:[
"111111",
"222222",
"333333"
]
}
];
和項目
itemsCollection = [
{
_id:"111111",
name: "Laptop",
price:1000.00
},
{
_id:"222222",
name: "Bike",
price:123.00
},
{
_id:"333333",
name: "House",
price:500000.00
}
];
的單獨收集顯然,我們不想插入整個項目itemWatchList數組中的obj,因爲項目數據可能會更改,即價格。
假設我們將該用戶拉到GUI並想要顯示用戶itemWatchList的網格。我們不能,因爲我們所有的都是ID的列表。是唯一選擇做第二個collection.find([itemWatchList]),然後在結果回調中操作用戶記錄以顯示當前項目?這個問題就是如果我返回一個數組的多個用戶,每個用戶都有一個itemWatchList的數組,這將是一個回調噩夢,試圖保持結果直。我知道Map Reduce或Aggregation框架不能遍歷多個集合。
這裏的最佳實踐是什麼?是否有更好的數據結構可以用來避免這個問題?
您目前的結構非常理想。您需要使用像貓鼬這樣的模塊來提供參考解析功能。 - http://mongoosejs.com/docs/populate.html。 NodeJS本地驅動程序 - 你需要自己做兩個查詢。 – BatScream 2014-12-04 01:33:21