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“:{...}}}你真的有,是**不是**数组。这就解释了为什么您在投影中使用的符号不会返回任何内容。 –