我想直接在mongodb数据库中使用Aggregations聚合模型树结构。
是否可以进行这样的分层聚合?目前,我在一个程序中这样做。
我想使用像:
这样的集合{
"Name" : "john",
"Parents" : ["sandy", "bryan"]
}
{
"Name" : "sandy",
"Parents" : ["bill", "daisy"]
}
{
"Name" : "bryan",
"Parents" : ["dora", "david"]
}
{
"Name" : "dora",
"Parents" : ["cliff", "darla"]
}
并生成一个新的集合,如:
{
"Name" : "sandy",
"Parents" : ["bill", "daisy"],
"Ancestrors" : ["bill", "daisy"]
}
{
"Name" : "dora",
"Parents" : ["cliff", "darla"],
"Ancestrors" : ["cliff", "darla"]
}
{
"Name" : "bryan",
"Parents" : ["dora", "david"],
"Ancestrors" : ["dora", "david", "cliff", "darla"]
}
{
"Name" : "john",
"Parents" : ["sandy", "bryan"],
"Ancestrors" : ["sandy", "bryan", "bill", "daisy", "dora", "david", "cliff", "darla"]
}
答案 0 :(得分:0)
我不认为使用MapReduce来进行树结构聚合是可能的,因为MongoDb 2.4因为我们不能在map函数中使用“db.mycollection.find(...)”。
所以我们无法在地图函数中检索层次结构文档......
在MongoDB 2.4中,map-reduce操作,group命令和$ where运算符表达式无法访问某些全局函数或 mongo shell中可用的属性,例如db。
升级到MongoDB 2.4时,如果需要,则需要重构代码 map-reduce操作,组命令或$ where操作符 表达式包括任何全局shell函数或属性 不再可用,例如db。