使用mongodb在Array中查找Subdocument

mri*_*z_p 19 mongodb

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

我想检索有关所获得的奖项信息_id:1年份:1975.

我尝试了几个查询

bios.find({
    "_id" : 1,
    "awards" : {
        "year" : 1975
    }
});
Run Code Online (Sandbox Code Playgroud)

但我从来没有收到适当的文件.如何在阵列中检索此文档?

mne*_*syn 37

你必须使用点符号:

bios.find({"_id" : 1, "awards.year" : 1975 });
Run Code Online (Sandbox Code Playgroud)

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

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