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

时间:2011-11-08 04:42:12

标签: c#-4.0 mongodb mongodb-.net-driver

给出一组项目{url:'http:// blah'}。如何判断记录是否存在于URL为“http://stackoverflow.com”的位置?

P.S。我正在与c#驱动程序进行通信

4 个答案:

答案 0 :(得分:7)

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

如果您只希望答案为0或1,那么计数可能是最有效的方法。如果您认为计数非常大并且您真正关心的是是否存在一个或多个,则FindOne是最有效的方法。

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

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
}

答案 1 :(得分:2)

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

int count = collection.FindAs<Item>(Query.EQ("url", "http://stackoverflow.com")).Count();
if(count > 0)
{
  //do some stuff
}

答案 2 :(得分:1)

IMongoQuery query = Query.EQ("url", "http://stackoverflow.com");
var res = collection.FindOne(query);
if(res == null)//don't exist
{

}

答案 3 :(得分:0)

MongoDB中Key的存在可以使用Exists和第二个参数检查为true或false

var filter = builder.Exists("style", false);
var RetrievedData = collection.Find(filter).ToList()

Refference Link

相关问题