20

我正在使用http://docs.mongodb.org/manual/reference/bios-example-collection中的 The bios Example Collection来教育自己有关查询 mongodb 的知识。

我想检索有关_id: 1year: 1975中获得的奖项的信息。

我尝试了几个查询,其中

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

但我从来没有收到过正确的文件。如何在数组中检索此文档?

4

1 回答 1

40

您必须使用点符号

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

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

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

于 2013-10-28T11:03:07.213 回答