给出一组项目{url:'http:// blah'}。如何判断记录是否存在于URL为“http://stackoverflow.com”的位置?
P.S。我正在与c#驱动程序进行通信
答案 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()