.NET中的MongoDB Projection是否发生在数据库或内存中?

时间:2017-03-22 12:09:43

标签: asp.net mongodb

您好我是MongoDB和ASP.Net的新手。我想知道MongoDB投影是从服务器本身的文档中检索字段还是检索整个文档并在内存中过滤它。

例如:

var filter = Builders<FoodItems>.Filter.Where(r => r.Fruits.Name == "Mango");
var result = Context.FruitCollection
   .Find(filter)
   .Project(r => new {r.Fruits.Cost, r.Fruits.Quantity})
   .ToList();
return result;

这里,直接从数据库中检索“Cost”和“Quantity”字段,或者检索整个“FoodItems”文档并从内存中检索相应的字段?

提前致谢。

1 个答案:

答案 0 :(得分:1)

投影发生在数据库服务器端;它通常用于to limit the amount of data that MongoDB sends to applications

一个特殊的例子,展示了MongoDB如何利用投影来优化自己的运行,这是当从查询返回的所有字段都包含在用于查找数据的索引中时;这被称为covered query,这意味着一旦MongoDB找到索引条目,它就可以立即完成,而无需进一步查看实际的集合数据。