【问题标题】:Query all documents and sub-documents for a specific key in mongodb without looping在 mongodb 中查询特定键的所有文档和子文档而不循环
【发布时间】:2013-04-19 16:23:52
【问题描述】:

我很难为这个问题选择正确的标题。我有如下文件和子文件列表

{
        "name" : "Pets",
        "subcategories" : [
            {
                "name" : "Cats",
                "fbCategories" : []
            },
            {
                "name" : "Dogs",
                "fbCategories" : []
            }
        ],
        "fbCategories" : ["Pet Services","Pet Supplies", "Animal"]
    },
    {
        "name" : "Entertainment",
        "subcategories" : [
            {
                "name" : "Music",
                "subcategories" : [
                    {
                        "name" : "Albums",
                        "fbCategories" : [ "Album"]
                    },
                    {
                        "name" : "Musicians",
                        "fbCategories" : ["Concert Tour","Musician/Band"]
                    }
                ],
                "fbCategories" : [
                    "Concert Venue",
                    "Music Chart",
                    "Music Video",
                    "Musical Instrument",
                    "Record Label",
                    "Music"
                ]
            }

在此示例中,我们有两个主要类别 ("Pets","Entertainment" ) 及其对应的子类别 (“宠物”的猫和狗,...).虽然有不同级别的子类别,但所有文档/子文档都有两个键,name 和 fbCategories。我想在不编写循环或多个查询的情况下找到每个类别/子类别的 fbCategories。无论如何要在一个查询中查询它们,结果应该为每个 "name" 键列出 "fbCategories"。例如对于 "musicians" ,它将列出 ["Concert Tour","Musician/Band"] ,而对于 "Music" 它将列出

 ["Concert Venue","Music Chart","Music Video","Musical Instrument","Record Label","Music"]          

【问题讨论】:

  • 如果子类别处于不同且未知的深度,则不,不有效,不存在。理想情况下,您希望为 name 字段编制索引,但您不希望根据可能需要的点表示法级别拥有大量索引(并且有一个实用(~16)和硬限制(64 ) 在每个集合的索引数上)。你能把结构弄平吗(docs.mongodb.org/manual/core/data-modeling/…)?

标签: json mongodb


【解决方案1】:

看看:Finding embeded document in mongodb?

没有循环,恕我直言,这个问题没有解决,因为 $where 语句在聚合框架中受到限制。

【讨论】:

    猜你喜欢
    • 2013-09-10
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多