2014-10-03 39 views
0

我正在尋找讓我們的mongo查詢更快,更高效的方法。當查詢MongoDB時,我們應該使用Query還是Query <T>?

我們已經通過使用GetCollection<T>("CollectionName")獲得收藏。

但是,我們應該通過使用Query.EQ("fieldname", "fielddata")還是Query<t>.EQ(x => x.FieldName, "fielddata")來構建查詢?我個人更喜歡第二種方式,但效率更高?

有什麼區別嗎?我們應該使用哪個?

假設它們運行在相同的硬件上,查詢相同的數據庫。

+0

相關閱讀:[哪個更快?由Eric Lippert](http://ericlippert.com/2012/12/17/performance-rant/) – Vache 2014-10-03 15:54:57

+0

不是很有幫助。它曾經是因爲它編譯並運行得更快,所以你會在存儲過程中編寫查詢,而不是在SQL Server中進行內聯查詢。我想知道這裏是否也是如此。 – 2014-10-03 15:58:26

回答

1

有 蒙戈引擎作用相同於Query<t>.EQ(x => x.FieldName, "fielddata")Query.EQ("fieldname", "fielddata")最後都將被轉換爲BSON文檔作爲{ 'FieldName', 'fielddata'}

2

那麼它們之間沒有區別...

Query.EQ(X => X假設您已將T.FieldName屬性映射到camelCase「FieldName」,「fieldData」)和Query.EQ(「fieldName」,「fieldData」)都將導致相同的json - {「fieldName」:「fieldData」字段名」。

鑑於此,當然不使用泛型會帶來更快的體驗。它必須做更少的工作。使用類型化表單意味着我們需要查找映射信息並應用它。

但是,這裏的速度增加很大程度上會變得不明顯,除非您每秒鐘處理數百萬個這樣的事情,這可能會被滿足查詢服務器端的網絡和mongo黯然失色。最好的辦法是衡量它。

最終,通用表單存在的原因是您不必在任何地方都有您的映射信息。