从大型文档的查询中排除嵌套文档

时间:2017-11-22 19:42:46

标签: c# mongodb

当拥有一个内部有许多嵌套文档的数据结构时,以及当这样的嵌套文档相当大时,例如:

//1,000 dealers
public class Dealer {
   public String Id {get; set;}
   public Product[] Products {get; set;} // 1,000 Products
   ...
}
public class Product {
   public String Id {get; set;}
   public Order[] Orders {get; set;} // 1,000 Daily orders
   ...
}

在进行查询时是否有办法排除某些嵌套文档以加快操作?

由于我是No-SQL的新手,这样的架构是否有意义? MongoDb中是否有任何索引机制?

1 个答案:

答案 0 :(得分:1)

您可以拥有IQueryable<T>并仅获取所需的属性,例如

var dealers = dealerService.All().Select(x => new { x.Property1, x.Property2 }).ToList();

根据我最近的经验,我建议不要在文档中过深地嵌入文档(例如,数组中的大文档)。如果您需要了解它,我建议您阅读以下两个链接:

6 Rules of Thumb for MongoDB Schema Design

Data Models at MongoDB Documentation

MongoDB为不同目的和不同类型的内容提供不同类型的索引。我建议阅读MongoDB Index Concepts