3
A
回答
7
對於任何上述建議是有效的,你應該確保有一個index元素。否則,將需要完整的收集掃描。
如果您只希望答案是0或1,count可能是最有效的方法。如果您認爲計數會非常大,並且您真正關心的是是否有一個或多個,FindOne是最有效的方法。
FindOne可能無關緊要地返回整個文檔,除非文檔實際上相當大。在這種情況下,你可以告訴服務器只返回一個字段(_id似乎是最有可能的候選人):MongoDB中關鍵的
var query = Query.EQ("url", "http://stackoverflow.com");
var fields = Fields.Include("_id");
var res = collection.Find(query).SetFields(fields).SetLimit(1).FirstOrDefault();
if (res == null) {
// no match found
}
2
你只需要檢查由該查詢返回的項數通信:
int count = collection.FindAs<Item>(Query.EQ("url", "http://stackoverflow.com")).Count();
if(count > 0)
{
//do some stuff
}
+1
難道不證明這從長遠來看將ineffecient作爲整個集合會被搜索,而不是能夠找到的第一個後返回? –
1
IMongoQuery query = Query.EQ("url", "http://stackoverflow.com");
var res = collection.FindOne(query);
if(res == null)//don't exist
{
}
+0
這是不是有點低效,因爲它返回整個對象而不僅僅是一個布爾值? –
0
存在,可以通過檢查已存在和第二個參數爲真或假
var filter = builder.Exists("style", false);
var RetrievedData = collection.Find(filter).ToList()
相關問題
- 1. 判斷一個對象是否存在於一個集合中
- 2. 如何判斷網頁是否存在?
- 3. 如何判斷「ZipArchiveEntry」是否是目錄?
- 4. 如何判斷一個集合是否存在於使用Mongoid的MongoDB中?
- 5. 如何判斷PDF是否被標記
- 6. 如何判斷Postgres中的記錄是否發生了變化
- 7. 如何判斷ParameterInfo類型是否是一個集合?
- 8. 如何判斷是否存在W.I.F標記? - 最佳方法
- 9. 如何判斷熱鍵組合是否已存在
- 10. 如何判斷NSUserDefaults是否已保存?
- 11. 如何判斷NSManagedObject是否已保存?
- 12. 如何判斷Office剪貼板集合是否已打開?
- 13. 如何判斷數據庫記錄是否已更改?
- 14. 如何判斷內存頁是否標記爲只讀?
- 15. 如何判斷記錄是否仍在SQL表中 - 使用linq也許?
- 16. 如何判斷文件是否包含在目錄中?
- 17. Kohana 3.2 ORM檢查集合中是否存在記錄
- 18. 如何判斷不存在的服務或缺少記錄?
- 19. PHP:判斷文件是否存在?
- 20. 如何判斷內存地址在OS中是否空閒?
- 21. 如何判斷Android中是否存在意圖額外功能?
- 22. 如何判斷DataMapper中是否存在表格
- 23. 如何判斷表中是否存在行?
- 24. 如何判斷數據庫中的表是否存在?
- 25. 如何判斷圖像是否在JQuery中加載或緩存?
- 26. 如何判斷editText是否在焦點?
- 27. 如何判斷C結構在Perl XS中是否有成員?
- 28. 如何在C#中判斷系統是否支持觸摸
- 29. 如何判斷OpenMP是否在我的C++程序中工作
- 30. 如何判斷一個目錄是否可以在Objective-C中寫入?
如果你使用「var fields = Fields.Include(」url「)。Exclude(」_ id「),那麼URL上的索引將是一個覆蓋索引,並且能夠提供結果而不從文檔本身加載任何東西。 – Appetere