2017-03-22 18 views
0

您好我是MongoDB和ASP.Net的新手。我想知道MongoDB投影是從服務器本身的文檔中檢索字段還是檢索整個文檔並將其過濾到內存中。.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; 

在此,「成本」和「數量」字段被直接從數據庫或文獻檢索整個「FoodItems」檢索和相應的字段被從存儲器中檢索?

在此先感謝。

+0

Github提供了源代碼,你可以在這裏看看:https://github.com/mongodb/mongo-csharp-driver –

回答

1

投影發生在數據庫服務器端;它通常用於to limit the amount of data that MongoDB sends to applications

一個顯示MongoDB如何利用投影來優化自己的運行的特定示例是,當查詢返回的所有字段都包含在用於查找數據的索引中時,這就是所謂的covered query,這意味着一旦MongoDB找到了索引條目,它可以立即完成,而不必進一步去實際的收集數據。