2015-12-02 91 views
0

分层数据我有一个像波纹管的例子在MongoDB的层次结构:查询有关MongoDB

class Employee 
{ 
    Guid Id {get;set;} 
    Guid ParentId {get;set;} 
    Guid[] ChildrenId {get;set;} 
    Schedules[] Schedules {get;set;} 
} 

,我需要写一个返回所有的日程安排的功能,或者他们的所有是计数下面给出了一个Id(不仅仅是直接的孩子,而是所有的层次结构,它没有最大层数)。

我可以使用递归函数做到这一点,但是这会产生很多查询到数据库并带来很多我不想要的数据,例如我需要让所有员工只计算他们的计划根据一些规则。

我想知道是否有更简单或更具性能的方式来做这种数据分析。

我使用MongoDb与C#驱动程序2.1。

回答

0

您可以选择字段使用

cursor.SetFields(Fields.Include("Shedules", ...)); 

返回或者你可以使用MongoDB的聚集API。这是相当困难的,但你只需要仔细阅读文档

+0

谢谢,但只是设置领域将不会回避和转发到数据库很多次。 – bateloche

+0

所以你需要使用 [aggregation api](http://mikaelkoskinen.net/post/mongodb-aggregation-framework-examples-in-c)。 – FanAs

+0

但是如何?我无法看到AggregationApi如何循环层次结构 – bateloche