0
假設我有一個患者數據庫,每個患者可能有多個物理地址,因此數據庫具有地址數組。我想查找某個Patient並從地址數組中的每個地址返回一個特定字段。從特定數組獲取特定字段
如果我用這個,我成功地讓每一個地址(數組成員)和每一個細節每一個地址(街道,號碼,城市,郵編等):
db.Patients.find({ "LastName": "Smith" }, { "Addresses": 1 })
我試試這個,希望能獲得第一個地址
db.Patients.find({ "LastName": "Smith" }, { "Addresses.0.City": 1 })
的唯一城市或我試試這個(簡化的東西),希望得到的(只)的第一個地址的所有細節
db.Patients.find({ "LastName": "Smith" }, { "Addresses.0": 1 })
相反,在這兩種情況下,我都會爲地址的空文檔獲取患者記錄。但我不明白爲什麼?
謝謝!
文檔中返回所有的地址我們也沒有。也許你應該在你的問題中顯示你的文檔。 [請編輯您的問題以顯示該文檔。](https://stackoverflow.com/posts/44615436/edit) –
您是否嘗試過'db.Patients.find({「LastName」:「Smith」},{「Addresses .City「:1})'? – Veeram
看看你以前的問題[只檢索子文檔中的一些字段](https://stackoverflow.com/questions/44600321/retrieve-only-some-fields-from-sub-document)這實際上是由我自己改名的你將這個結構稱爲「一個數組」,這似乎是合乎邏輯的,你還沒有從中吸取教訓。類似於「{」地址「:{」Home「:{」street「:」...「,」city「:」...「},」Work「:{...}}}你真的有,是**不是**數組。這就解釋了爲什麼您在投影中使用的符號不會返回任何內容。 –