当拥有一个内部有许多嵌套文档的数据结构时,以及当这样的嵌套文档相当大时,例如:
//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中是否有任何索引机制?
答案 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