使用mongodb在Array中查找Subdocument

时间:2013-10-28 10:54:58

标签: mongodb

我正在使用来自http://docs.mongodb.org/manual/reference/bios-example-collection的bios示例集来教育自己查询mongodb。

我想在年:1975年中检索 _id:1 赢得的奖项的信息。

我尝试了几个查询

bios.find({
    "_id" : 1,
    "awards" : {
        "year" : 1975
    }
});

但我从未收到过适当的文件。如何在数组中检索此文档?

1 个答案:

答案 0 :(得分:37)

您必须使用dot notation

bios.find({"_id" : 1, "awards.year" : 1975 });

这是一个相当无意义的查询,因为你在查询中也有_id,但我想这是因为你正在玩一个例子。此外,你说你正在寻找1967年的奖项,但代码是1975年。

如果您搜索"awards" : { "year" : 1975 },mongodb将查找整个子文档awards的完全匹配项。在这种情况下,这不是你想要的。此外,由于awards是一个数组,因此始终为false。如果您想在列表中查找特定的奖励文档,$elemMatch将是您的最佳选择。