前言

  在日常开发中,偶尔会用到 MongoDB 的数据操作,也花费了一些时间调试,因此在此处记录一下,共同进步。

废话少说,出招吧!

正文

2.1 准备工作

首先需要引入 .Net 平台链接 MongoDB 的动态库:MongoDB.Driver

然后创建默认 DBContext 实体类

(将数据库以及表的信息引入到系统中备用,数据库链接信息最好是放置在配置文件中,便于不同环境灵活配置,次非本文重点就直接默认了)

  1. using MongoDB.Bson;
  2. using MongoDB.Driver;
  3. namespace DBContext.DataBase
  4. {
  5. public class MongoDBContextDefault
  6. {
  7. //连接地址
  8. private static string conn = "mongodb://0.0.0.0:0000";
  9. //连接服务端
  10. static MongoClient client_pub = new MongoClient(conn);
  11. //数据库名称
  12. private static string dbName = "MongDBName";
  13. //集合名称
  14. private static string collName_Table1 = "Table1";
  15. private static string collName_Table2 = "Table2";
  16. //获取指定数据库
  17. static IMongoDatabase db_Test = client_pub.GetDatabase(dbName);
  18. //获取指定集合 BsonDocument数据库文档对象
  19. public static IMongoCollection<BsonDocument> colle_Table1 = db_Test.GetCollection<BsonDocument>(collName_Table1);// BsonDocument:最终会以 Json 对象来取值
  20. public static IMongoCollection<Table2Model> colle_Table2Model = db_Test.GetCollection<Table2Model>(collName_Table2);// Table2Model:与表字段完全一致的对象,取值方便
  21. }
  22. }

2.2 数据访问--获取 Json 对象

直接上代码,看注释即可:

(传入的查询条件,需要和数据库中的类型匹配)(若通过 ID 查询,需要将条件值转为 Guid 类型)

  1. using DBContext.DataBase;
  2. using MongoDB.Bson;
  3. using MongoDB.Bson.IO;
  4. using MongoDB.Bson.Serialization;
  5. using MongoDB.Driver;
  6. using Newtonsoft.Json.Linq;
  1. public List<JObject> GetValues(string name, string id)
  2. {
  3. FilterDefinitionBuilder<BsonDocument> builderFilter = Builders<BsonDocument>.Filter;
  4. DateTime startTime = DateTime.Now.AddDays(-7);//只同步最近七天有更新的流程
  5. FilterDefinition<BsonDocument> filter = builderFilter.And(builderFilter.Eq("name", name), // 多条件查询
  6. builderFilter.Eq("id", new Guid(id)), // id 需要转换成 Guid 类型
  7. builderFilter.Gte("stime", startTime)); // Time 需要是 DateTime 类型
  8. var result = MongoDBContextDefault.colle_ProcInstData.Find<BsonDocument>(filter).ToList(); // 获取数据
  9. List<JObject> jTokens = new List<JObject>();
  10. var setjson = new JsonWriterSettings
  11. {
  12. OutputMode = JsonOutputMode.Strict
  13. };
  14. foreach (var item in result) // 逐个转为 JObject,备用(后续循环,可以直接通过 JObjectItem["name"] 进行取值)
  15. {
  16. JObject item_jo = JObject.Parse(item.ToJson(setjson));
  17. jTokens.Add(item_jo);
  18. }
  19. return jTokens;
  20. }

2.3 数据访问--获取指定对象类型

此方案中的查询字符串和上一章节是有区别的,具体如下:

(查询条件先拼接成 json 字符串,再转 BsonDocument 对象)

  1. public void Method(string name,string id)
  2. {
  3. DateTime dtcondition = DateTime.Now.AddDays(-7);
  4. // 时间上差一个月,所以月份 -1 // 具体原因未知。。。待后续补充
  5. string strdate = $"new Date({dtcondition.Year},{dtcondition.Month - 1},{dtcondition.Day})";
  6. string querystr = $"{{$and:[{{'name':'{name}'}}" +
  7. $",{{'id':CSUUID('{id}')}}" + // 另一种根据 ID 查询方式
  8. $",{{'time':{{$gte:{strdate}}}}}]}}";
  9. var querycon = BsonSerializer.Deserialize<BsonDocument>(querystr);
  10. var dataresult = MongoDBContextDefault.colle_Table2.Find(querycon).ToList();
  11. // 这里的 dataresult 结果类型是 List<Table2Model>,可以直接跟属性取值,更方便
  12. }

注:暂列这两种查询吧,后续继续补充,有问题欢迎指正。

.Net Core 3.0 对 MongoDB 的多条件(两种)查询操作的更多相关文章

  1. EntityFramework Core 2.0 Explicitly Compiled Query(显式编译查询)

    前言 EntityFramework Core 2.0引入了显式编译查询,在查询数据时预先编译好LINQ查询便于在请求数据时能够立即响应.显式编译查询提供了高可用场景,通过使用显式编译的查询可以提高查 ...

  2. ASP.NET Core 2.0 MVC 发布部署--------- Ubuntun 16.04 X64 具体操作

    .Net Core 部署到Ubuntu 16.04 中的步骤 1.安装工具 1.apache 2..Net Core(dotnet-sdk-2.0) 3.Supervisor(进程管理工具,目的是服务 ...

  3. [Spring Data MongoDB]学习笔记--MongoTemplate查询操作

    查询操作主要用到两个类:Query, Criteria 所有的find方法都需要一个query的object. 1. 直接通过json来查找,不过这种方式在代码中是不推荐的. BasicQuery q ...

  4. 不使用spring的情况下原生java代码两种方式操作mongodb数据库

    由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常.   主要原因实际上是和mongodb本身无关的,因为他们改的是配置 ...

  5. 第八节:Asp.Net Core整合Log4net(官方的、微软的两种)

    一. 整合Log4net 1. 简单说明 对于log4net 官方的程序集而言,从2.0.7开始就支持.Net Core了,这里我们采用的是2.0.8,虽然好久没更新了,但不影响使用.Core版本与普 ...

  6. MongoDB源码分析——mongod数据查询操作

    源码版本为MongoDB 2.6分支 Edit mongod数据查询操作 在mongod的初始化过程中说过,服务端接收到客户端消息后调用MyMessageHandler::process函数处理消息. ...

  7. mongodb 系列 ~ mongo的两种引擎介绍对比

    一 简介 两种引擎方式的对比二  对比与说明   1 版本支持      MMAP引擎 3.2版本之前,默认引擎       WT 引擎 3.2版本之后,默认引擎   2 并发性能(核心)     M ...

  8. Centos 7 中 部署 asp.net core 3.0 + nginx + mongodb 的一些新手简单入门,非docker

    目录 零.准备工作 一.部署Mongodb 1.安装Mongodb 2.创建mongodb的数据目录 3.设置目录权限 4.设置mongodb启动 5.修改mongodb的配置文件 6.启动Mongo ...

  9. mongodb分组,的两种方式,先记一下

    using MongoDB.Bson; using MongoDB.Driver; using MongoDB.Driver.Builders; using NationalUnion.AdGalle ...

随机推荐

  1. vue.js及H5常见跨域问题解决方案

    一.原生H5跨域问题解决方案 1.live-server 代理解决 首先在有node.js环境下,打开命令行工具,输入 npm install live-server -g 全局安装全局安装 live ...

  2. mac怎么清理DNS缓存

    可以通过Mac系统启动台功能,在其他页面打开终端进行操作即可. 1.打开终端 2.进入终端界面,输入sudo killall -HUP mDNSResponder命令执行即可.

  3. Jenkins+SpringCloud(多模块)+Vue项目详细配置

    一.Jenkins安装及所需插件安装 安装过程略. 我这用到工具包括JDK.Git.Maven.NodeJS:可以选择自行在服务器安装,也可以通过Jenkins自动安装,位置在系统管理 >全局工 ...

  4. django_day04

    django_day04 路由 from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图,参数,别名), ] 正则表达式 ...

  5. 采云链SRM SaaS供应商管理系统,发展型中小企业的福音

    采购业务的发展遵循一些规律:采购从一开始围绕"供应商"开展,逐渐发展成围绕"货物"进行,如今围绕"供应商协同"和"采购流程管理&q ...

  6. 【前端】在浏览器控制台,直接发Ajax请求

    我们在日常的开发的过程中,经常需要前端测试发送请求测试一些数据.但是由于一些session,cookie的存在,我们无法在postman上创建一些会话.那么这样,我们就可以在浏览器上直接发送Ajax请 ...

  7. TLS安全策略等级

    TLS安全策略包含HTTPS可选的TLS协议版本和配套的加密算法套件.TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差. ssl_cip ...

  8. Elastic:使用Grafana监视 Elasticsearch

  9. 7M与N的数学运算

    m=eval(input()) n=eval(input()) a=m+n b=m*n c=m**n d=m%n e=max(m,n) print(a,b,c,d,e)

  10. Node.js(四)json

    npm init -y(初始化项目) npm install express(引入express) npx express-generator -e(自动生成模板.添加对 ejs 模板引擎的支持) n ...