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