在MongoDb中具有聚合的模型树结构

时间:2015-10-01 16:07:52

标签: mongodb

我想直接在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"]
}

1 个答案:

答案 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。