【发布时间】: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/…)?