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# 驱动查询的更多相关文章

  1. (转载)MongoDB C#驱动中Query几个方法

    MongoDB C#驱动中Query几个方法 Query.All("name", "a", "b");//通过多个元素来匹配数组 Query ...

  2. MongoDB 覆盖索引查询

    MongoDB 覆盖索引查询 官方的MongoDB的文档中说明,覆盖查询是以下的查询: 所有的查询字段是索引的一部分 所有的查询返回字段在同一个索引中 由于所有出现在查询中的字段是索引的一部分, Mo ...

  3. MongoDB 入门之查询(find)

    MongoDB 入门之查询(find) 1. find 简介 (1)find的第一个参数决定了要返回哪些文档. 空的查询文档会匹配集合的全部内容.默认就是{}.结果将批量返回集合c中的所有文档. db ...

  4. MongoDB数据库中查询数据(下)

    MongoDB数据库中查询数据(下) 在find中,options参数值为一个对象,用来设置查询数据时使用的选项,下面我们来对该参数值对象中可以使用的属性进行介绍: 1. fields; 该属性值为一 ...

  5. 在MongoDB数据库中查询数据(上)

    在MongoDB数据库中查询数据(上) 在MongoDB数据库中,可以使用Collection对象的find方法从一个集合中查询多个数据文档,find方法使用方法如下所示: collection.fi ...

  6. 【转】MongoDB学习笔记(查询)

    原文地址 MongoDB学习笔记(查询) 基本查询: 构造查询数据. > db.test.findOne() { "_id" : ObjectId("4fd58ec ...

  7. 【第十二章】 springboot + mongodb(复杂查询)

    简单查询:使用自定义的XxxRepository接口即可.(见 第十一章 springboot + mongodb(简单查询)) 复杂查询:使用MongoTemplate以及一些查询条件构建类(Bas ...

  8. 第十二章 springboot + mongodb(复杂查询)

    简单查询:使用自定义的XxxRepository接口即可.(见 第十一章 springboot + mongodb(简单查询)) 复杂查询:使用MongoTemplate以及一些查询条件构建类(Bas ...

  9. 使用VS2010编译MongoDB C++驱动详解

    最近为了解决IM消息记录的高速度写入.多文档类型支持的需求,决定使用MongoDB来解决. 考虑到MongoDB对VS版本要求较高,与我现有的VS版本不兼容,在leveldb.ssdb.redis.h ...

随机推荐

  1. NetworkComms V3 使用TCP通信传递IList<T>类型的数据

    客户端从服务器获取一组IList<T>类型的数据非常常见(通常从数据库中获取) 我们用NeworkComms V3来演示一下(NetworkcommsV2.x版本也同样支持) [ 使用pr ...

  2. django学习

    1.进入目录→创建一个新的项目mysite 命令:E:\MyCode\PythonCode>django-admin startproject mysite 自动生成目录: 2.创建一个APP ...

  3. ZOJ 3817Chinese Knot(The 2014 ACM-ICPC Asia Mudanjiang Regional First Round)

    思路: 将4个串每个串都反向这样得到新的四个串一共8个串,对于母串每个位置检测这个串能不能放进去,hs或者后缀数组都可以.然后dp[i][j]  (0<i<len  0<=j< ...

  4. 使用VisualVM进行性能分析及调优(转)

    VisualVM 是一款免费的\集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃圾回 ...

  5. TCP/IP 七层协议

  6. .Net内置特性Attribute介绍

    特性Attribute概述 特性(Attribute)是一种特殊的类型,可以加载到程序集或者程序集的类型上,这些类型包括模块.类.接口.结构.构造函数.方法.字段等,加载了特性的类型称之为特性的目标. ...

  7. HDU2459 后缀数组+RMQ

    题目大意: 在原串中找到一个拥有连续相同子串最多的那个子串 比如dababababc中的abababab有4个连续的ab,是最多的 如果有同样多的输出字典序最小的那个 这里用后缀数组解决问题: 枚举连 ...

  8. c# 反射应用之工厂

    反射是.net的核心功能,十分的强大.但是好像微软封装的太过了,作为程序员,在实际项目中我很少用到反射(估计是参加的大型项目太少了,需要交互第三方的项目太少了). 工厂模式是软件设计模式中重要的一种, ...

  9. java读取大文件

    1  多线程 2  java内存映射读取大文件

  10. linux命令每日一练习 创建新文件 列出文件的时候带着行号

    touch ××× nl ****