【问题标题】:Find Subdocument in Array with mongodb使用 mongodb 在数组中查找子文档
【发布时间】:2013-10-28 10:54:57
【问题描述】:

我正在使用来自http://docs.mongodb.org/manual/reference/bios-example-collection 的 The bios Example Collection 来学习如何查询 mongodb。

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

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

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

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

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    你必须使用dot notation:

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

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

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

    【讨论】:

    • 这一年是一个错字。非常感谢您的详细解释!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 2016-08-25
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 2021-05-23
    相关资源
    最近更新 更多