MongoDB如何检查是否存在
我想知道如何使用mongoDB和C#检查对象的存在。
我已经找到了一种方法,但是由于Any()方法,我不得不使用Linq,但是我想知道如果没有Linq可以做到这一点吗?
database.GetCollection("Applications").Find(Query.EQ("Name", applicationName)).Any()
多谢你们!
使用$ count运算符来避免内存问题,它不会将数据库从数据库加载到内存中:
int count = items.FindAs(Query.EQ("name", appName)).Count(); if(count > 0) { //then doc exists }
mongodb中存在的 operator $可用于标识文档中存在某些字段,但您无法将查询传递给它:
database.GetCollection("Applications") .Find(Query.Exists("Name", true));
最简单的类型/重构安全选项是使用带有AsQueryable
LINQ
*:
var collection = database.GetCollection("Applications"); var exists = collection.AsQueryable().Any(avm => avm.Name == applicationName);
这将创建一个count命令并validation它是否高于零。
在某些情况下(性能是一个问题)而不是计算所有匹配的文档,您可以简单地告诉MongoDB
获取第一个并检查是否有一个:
var collection = database.GetCollection("Applications"); var exists = collection.AsQueryable().FirstOrDefault(avm => avm.Name == applicationName) != null;
正如Robert Stam指出的那样,在这种情况下, MongoCollection.Exists
和Query.Exists
都无关紧要。
*从版本1.4(2012-03-27)开始,驱动程序支持LINQ
查询(转换为mongo查询,因此没有内存问题)。
在2.x版本的驱动程序中检查是否存在的方法是:
bool exists = collection.Find(_ => _.Name == applicationName).Any();
或异步:
bool exists = await collection.Find(_ => _.Name == applicationName).AnyAsync();;
MongoCollection.Exists检查集合本身是否存在,而不是特定文档是否存在。
Query.Exists($ exists的查询构建器版本)用于查询文档是否包含特定字段(按名称)。
没有“官方”方式来查询是否存在与查询匹配的文档,但Andrew Orsich建议使用count可能是最好的方法。 他们只是评论我要补充的是,如果你要处理匹配的文档,那么你也可以继续使用Find的一些变体来查询它们。
我会建议官方教程中描述的方法
https://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial#CSharpDriverTutorial-FindandFindAsmethods
你可以找到并计算得到存在。
编辑:为了修复内存问题,似乎它“存在”MongoCollection对象中的Exists方法;)
上述就是C#学习教程:MongoDB如何检查是否存在分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/955619.html