首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何判断Mongo集合中是否存在记录(C#)

如何判断Mongo集合中是否存在记录(C#)
EN

Stack Overflow用户
提问于 2011-11-08 12:42:12
回答 4查看 7.5K关注 0票数 3

给定一个项目集合{ url:'http://blah‘}。如何判断是否存在url为"http://stackoverflow.com"?“的记录?

附注:我正在与c#驱动程序通信

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-09 12:10:24

要使前面的任何建议都有效,您应该确保在url元素上有索引。否则,将需要完整的集合扫描。

如果您只希望答案是0或1,count可能是最有效的方法。如果您认为数量会很大,而您真正关心的是有一个还是多个,那么FindOne是最有效的方法。

FindOne返回整个文档可能并不重要,除非文档实际上非常大。在这种情况下,您可以告诉服务器只返回一个字段( _id似乎是最有可能的候选字段):

代码语言:javascript
运行
复制
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
}
票数 7
EN

Stack Overflow用户

发布于 2011-11-08 14:04:32

您只需要检查查询返回的项目的数量:

代码语言:javascript
运行
复制
int count = collection.FindAs<Item>(Query.EQ("url", "http://stackoverflow.com")).Count();
if(count > 0)
{
  //do some stuff
}
票数 2
EN

Stack Overflow用户

发布于 2011-11-08 15:19:31

代码语言:javascript
运行
复制
IMongoQuery query = Query.EQ("url", "http://stackoverflow.com");
var res = collection.FindOne(query);
if(res == null)//don't exist
{

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8046029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档