mongodb C# 驱动查询
INoSqlProvider provider = NoSqlManager.Create("CloudTable");
IMongoCollection<FormMongoDBModel> collection = provider.GetCollection<FormMongoDBModel, IMongoCollection<FormMongoDBModel>>(ctid);
#region 查询条件拼接
switch (listquerymodel.querytype)
{
case "equal": //等于
if (listquerymodel.fieldtype == "Datetime")
{
list.Add(Builders<FormMongoDBModel>.Filter.Eq("field." + listquerymodel.field + "."+ queryconditiontype, Convert.ToDateTime(listquerymodel.value)));
}
else if (listquerymodel.fieldtype == "Number" || listquerymodel.fieldtype == "Money" || listquerymodel.fieldtype == "Formula")
{
list.Add(Builders<FormMongoDBModel>.Filter.Eq("field." + listquerymodel.field + "."+ queryconditiontype, Convert.ToDouble((listquerymodel.value))));
}
else
{
list.Add(Builders<FormMongoDBModel>.Filter.Eq("field." + listquerymodel.field + "."+ queryconditiontype, listquerymodel.value));
}
break;
case "notequal": //不等于
list.Add(Builders<FormMongoDBModel>.Filter.Ne("field." + listquerymodel.field + "."+ queryconditiontype, listquerymodel.value));
break;
case "like": //包含
list.Add(Builders<FormMongoDBModel>.Filter.Regex("field." + listquerymodel.field + "."+ queryconditiontype, listquerymodel.value));
break;
case "orlike":
string[] orlike_values = listquerymodel.value.Split('|');
List<FilterDefinition<FormMongoDBModel>> orlikeList = new List<FilterDefinition<FormMongoDBModel>>();
for (int i = 0; i < orlike_values.Length; i++)
{
orlikeList.Add(Builders<FormMongoDBModel>.Filter.Regex("field." + listquerymodel.field + "."+ queryconditiontype, orlike_values[i]));
}
list.Add(Builders<FormMongoDBModel>.Filter.Or(orlikeList));
break;
case "andlike":
string[] andlike_values = listquerymodel.value.Split('|');
List<FilterDefinition<FormMongoDBModel>> andlike_value = new List<FilterDefinition<FormMongoDBModel>>();
for (int i = 0; i < andlike_values.Length; i++)
{
list.Add(Builders<FormMongoDBModel>.Filter.Regex("field." + listquerymodel.field + "."+ queryconditiontype, andlike_values[i]));
}
break;
case "notlike":
string[] notlike_values = listquerymodel.value.Split('|');
List<FilterDefinition<FormMongoDBModel>> notlikeList = new List<FilterDefinition<FormMongoDBModel>>();
for (int i = 0; i < notlike_values.Length; i++)
{
list.Add(Builders<FormMongoDBModel>.Filter.Not(Builders<FormMongoDBModel>.Filter.Regex("field." + listquerymodel.field + "."+ queryconditiontype, notlike_values[i])));
}
break;
case "null":
FilterDefinition<FormMongoDBModel> filter = new BsonDocument("field." + listquerymodel.field + "."+ queryconditiontype, BsonNull.Value);
list.Add(Builders<FormMongoDBModel>.Filter.And(filter));
break;
case "notnull":
list.Add(Builders<FormMongoDBModel>.Filter.Ne("field." + listquerymodel.field + "."+ queryconditiontype, BsonNull.Value));
break;
case "or":
string[] or_values = listquerymodel.value.Split('|');
List<FilterDefinition<FormMongoDBModel>> orList = new List<FilterDefinition<FormMongoDBModel>>();
for (int i = 0; i < or_values.Length; i++)
{
orList.Add(new BsonDocument("field." + listquerymodel.field + "."+ queryconditiontype, or_values[i]));
}
list.Add(Builders<FormMongoDBModel>.Filter.Or(orList));
break;
case "greater":
if (listquerymodel.fieldtype == "Datetime")
{
list.Add(Builders<FormMongoDBModel>.Filter.Gt("field." + listquerymodel.field + "."+ queryconditiontype, Convert.ToDateTime(listquerymodel.value)));
}
else
{
list.Add(Builders<FormMongoDBModel>.Filter.Gt("field." + listquerymodel.field + "."+ queryconditiontype, listquerymodel.value));
}
break;
case "greaterequal":
if (listquerymodel.fieldtype == "Datetime")
{
list.Add(Builders<FormMongoDBModel>.Filter.Gte("field." + listquerymodel.field + "."+ queryconditiontype, Convert.ToDateTime(listquerymodel.value)));
}
else
{
list.Add(Builders<FormMongoDBModel>.Filter.Gte("field." + listquerymodel.field + "."+ queryconditiontype, listquerymodel.value));
}
break;
case "less":
if (listquerymodel.fieldtype == "Datetime")
{
list.Add(Builders<FormMongoDBModel>.Filter.Lt("field." + listquerymodel.field + "."+ queryconditiontype, Convert.ToDateTime(listquerymodel.value)));
}
else
{
list.Add(Builders<FormMongoDBModel>.Filter.Lt("field." + listquerymodel.field + "."+ queryconditiontype, listquerymodel.value));
}
break;
case "lessequal":
if (listquerymodel.fieldtype == "Datetime")
{
list.Add(Builders<FormMongoDBModel>.Filter.Lte("field." + listquerymodel.field + "."+ queryconditiontype, Convert.ToDateTime(listquerymodel.value)));
}
else
{
list.Add(Builders<FormMongoDBModel>.Filter.Lte("field." + listquerymodel.field + "."+ queryconditiontype, listquerymodel.value));
}
break;
case "between":
string[] between_values = listquerymodel.value.Split('|');
string between_value1 = between_values[0];
string between_value2 = between_values[1];
if (listquerymodel.fieldtype == "Datetime")
{
list.Add(Builders<FormMongoDBModel>.Filter.Gt("field." + listquerymodel.field + "."+ queryconditiontype, Convert.ToDateTime(between_value1)));
list.Add(Builders<FormMongoDBModel>.Filter.Lt("field." + listquerymodel.field + "."+ queryconditiontype, Convert.ToDateTime(between_value2)));
}
else
{
list.Add(Builders<FormMongoDBModel>.Filter.Gt("field." + listquerymodel.field + "."+ queryconditiontype, Convert.ToInt32(between_value1)));
list.Add(Builders<FormMongoDBModel>.Filter.Lt("field." + listquerymodel.field + "."+ queryconditiontype, Convert.ToInt32(between_value2)));
}
break;
default:
break;
}
#endregion
result = collection.Find(Builders<FormMongoDBModel>.Filter.And(list)).Skip(pageskip).Limit(pagesize).ToList();
mongodb C# 驱动查询的更多相关文章
- (转载)MongoDB C#驱动中Query几个方法
MongoDB C#驱动中Query几个方法 Query.All("name", "a", "b");//通过多个元素来匹配数组 Query ...
- MongoDB 覆盖索引查询
MongoDB 覆盖索引查询 官方的MongoDB的文档中说明,覆盖查询是以下的查询: 所有的查询字段是索引的一部分 所有的查询返回字段在同一个索引中 由于所有出现在查询中的字段是索引的一部分, Mo ...
- MongoDB 入门之查询(find)
MongoDB 入门之查询(find) 1. find 简介 (1)find的第一个参数决定了要返回哪些文档. 空的查询文档会匹配集合的全部内容.默认就是{}.结果将批量返回集合c中的所有文档. db ...
- MongoDB数据库中查询数据(下)
MongoDB数据库中查询数据(下) 在find中,options参数值为一个对象,用来设置查询数据时使用的选项,下面我们来对该参数值对象中可以使用的属性进行介绍: 1. fields; 该属性值为一 ...
- 在MongoDB数据库中查询数据(上)
在MongoDB数据库中查询数据(上) 在MongoDB数据库中,可以使用Collection对象的find方法从一个集合中查询多个数据文档,find方法使用方法如下所示: collection.fi ...
- 【转】MongoDB学习笔记(查询)
原文地址 MongoDB学习笔记(查询) 基本查询: 构造查询数据. > db.test.findOne() { "_id" : ObjectId("4fd58ec ...
- 【第十二章】 springboot + mongodb(复杂查询)
简单查询:使用自定义的XxxRepository接口即可.(见 第十一章 springboot + mongodb(简单查询)) 复杂查询:使用MongoTemplate以及一些查询条件构建类(Bas ...
- 第十二章 springboot + mongodb(复杂查询)
简单查询:使用自定义的XxxRepository接口即可.(见 第十一章 springboot + mongodb(简单查询)) 复杂查询:使用MongoTemplate以及一些查询条件构建类(Bas ...
- 使用VS2010编译MongoDB C++驱动详解
最近为了解决IM消息记录的高速度写入.多文档类型支持的需求,决定使用MongoDB来解决. 考虑到MongoDB对VS版本要求较高,与我现有的VS版本不兼容,在leveldb.ssdb.redis.h ...
随机推荐
- 【基本技能篇】>>第2篇《如何把事情做到最好——心得》
如何把事情做到最好——全美第一本系统阐述学习与成功之道的经典著作. ——2016年2月12日 四个阅读层次:①基础阅读,具有基本阅读的能力,包括认识字,懂得词,知会句子的基本意思等.②检视阅读(也是判 ...
- split 分割 字符串(分隔符如:* ^ : | , .) 及注意点
http://blog.sina.com.cn/s/blog_b6487d470101g0hp.html [1]单个符号作为分隔符 String address="上海|上海 ...
- lsof 常用命令
lsof 常用命令 原文地址: Lsof 是遵从Unix 哲学的典范,它只做一件事情,并且做的相当完美——它可以列出某个进程打开的所有文件信息.打开的文件可能是普通的文件,目录,NFS文件,块文件 ...
- whereis 和which
这两个命令用的好,可以很快找出文件的路径 [root@oc3408554812 zip-3.0]# which passwd/usr/bin/passwd[root@oc3408554812 zip- ...
- 如何在脚本中获取进程ID(PID)
我想要知道运行中脚本子shell的进程id.我该如何在shell脚本中得到PID. 当我在执行shell脚本时,它会启动一个叫子shell的进程.作为主shell的子进程,子shell将shell脚本 ...
- Proxy Pattern(Java动态代理和cglib的实现)
代理模式:给某一个对象提供代理对象,由代理对象控制具体对象的引用. 代理,指的就是一个角色对表另一个角色采取行动,就生活中,一个红酒厂商,是不会直接把红酒零销给客户的,都是通过代理完成他的销售业务.而 ...
- golang调用EXE
我是win7+go1.7+liteide,调用calc.exe package main import ( "os/exec" ) func main() { datapath : ...
- 在easyui的treeGrid中添加checkbox(jquery)
jsp界面,也可用在aspx.html等前台界面中: <script type="text/javascript"> function show(checkid){ v ...
- java中创建字符串的两种方式(“”与new String())及区别
结论:通过""创建的字符串实际上在java堆中只有一个,而通过new string创建出来的字符串在java堆中占有不同的内存. 第一个True表明这两个在内存中拥有相同的地址,那 ...
- Jetty和tomcat的对比
上周面试一个来自百度的员工,其中提到一个监控项目,使用jetty容器提供rest api服务,一直懵懂jetty /tomcat这些容器的区别,周末查了下,下面这个说的简单明了~ 转自:http:// ...