在mongodb中查找数组中的子文档

20

我正在尝试使用http://docs.mongodb.org/manual/reference/bios-example-collection中的生物示例集进行操作,以便了解如何查询mongodb。

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

我尝试了几个查询,其中包括

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

但我从未收到正确的文件。如何从数组中取回此文档?

1个回答

40
你必须使用“点符号”(dot notation):
bios.find({"_id" : 1, "awards.year" : 1975 });

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

如果你搜索"awards" : { "year" : 1975 },mongodb会寻找整个子文档awards的精确匹配。在这种情况下,这不是你想要的。而且,由于awards是一个数组,这将永远是错误的。如果你想在列表中查找特定的奖项文档,$elemMatch是正确的方法。


这个年份是一个打字错误。非常感谢详细的解释! - mritz_p

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接