给定一个项目集合{ url:'http://blah‘}。如何判断是否存在url为"http://stackoverflow.com"?“的记录?
附注:我正在与c#驱动程序通信
发布于 2011-11-09 12:10:24
要使前面的任何建议都有效,您应该确保在url元素上有索引。否则,将需要完整的集合扫描。
如果您只希望答案是0或1,count可能是最有效的方法。如果您认为数量会很大,而您真正关心的是有一个还是多个,那么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
}
发布于 2011-11-08 14:04:32
您只需要检查查询返回的项目的数量:
int count = collection.FindAs<Item>(Query.EQ("url", "http://stackoverflow.com")).Count();
if(count > 0)
{
//do some stuff
}
发布于 2011-11-08 15:19:31
IMongoQuery query = Query.EQ("url", "http://stackoverflow.com");
var res = collection.FindOne(query);
if(res == null)//don't exist
{
}
https://stackoverflow.com/questions/8046029
复制相似问题