我正在使用来自http://docs.mongodb.org/manual/reference/bios-example-collection的bios示例集来教育自己查询mongodb。
我想在年:1975年中检索 _id:1 赢得的奖项的信息。
我尝试了几个查询
bios.find({
"_id" : 1,
"awards" : {
"year" : 1975
}
});
但我从未收到过适当的文件。如何在数组中检索此文档?
答案 0 :(得分:37)
您必须使用dot notation:
bios.find({"_id" : 1, "awards.year" : 1975 });
这是一个相当无意义的查询,因为你在查询中也有_id
,但我想这是因为你正在玩一个例子。此外,你说你正在寻找1967年的奖项,但代码是1975年。
如果您搜索"awards" : { "year" : 1975 }
,mongodb将查找整个子文档awards
的完全匹配项。在这种情况下,这不是你想要的。此外,由于awards
是一个数组,因此始终为false。如果您想在列表中查找特定的奖励文档,$elemMatch
将是您的最佳选择。