在我的應用程序中有users
。每個用戶可能有很多朋友(其他用戶)。如果用戶A有一個朋友B,那麼用戶B有一個朋友A-總是。例如,我將不得不查詢用戶集合以獲取用戶A的所有朋友。我還必須使用geospacial索引進行此查詢,以獲得用戶A在給定半徑範圍內來自用戶A的所有朋友。如何模擬recurency並在MongoDB中有很多關係?
我在嘗試在MongoDB中「建模」此結構時遇到了一些問題。 現在我有這樣的(在貓鼬):
{
created: { type: Date, default: Date.now },
phone_number: { type: String, unique: true },
location: { type: [Number], index: '2dsphere' },
friends: [{ phone_number: String }]
}
因此,每個用戶包含其他用戶的電話號碼的數組(電話號碼識別每個用戶)。但我不認爲這是一個好主意,因爲一個用戶可能有零個或很多朋友 - 所以朋友陣列將是可變的,並可能顯着增長。
建模該結構的最佳選擇是什麼?
嗯所以,如果我假設每個用戶可能有多達1000個朋友,那麼我最好在每個用戶權限上使用數組? – user606521
但是數組格式有一個錯誤,您不能存儲關於友誼的額外信息。這可能是一個問題。 –
並非如此,您始終可以將對象(嵌入式文檔)存儲在包含友誼元數據的陣列中。 –