前言

  在日常开发中,偶尔会用到 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. [Android开发学iOS系列] 工具篇: Xcode使用和快捷键

    [Android开发学iOS系列] 工具篇: Xcode使用和快捷键 工欲善其事必先利其器. 编辑 Cmd + N: 新建文件 Option + Cmd + N: 新建文件夹 Cmd + / : 注释 ...

  2. 业务流程可视化-让你的流程图"Run"起来(7.运行状态持久化&轻量工作流支持)

    前言 感谢大家阅读本项目系列文章和对项目的支持.分享一下我对这个项目的新的改进. 之前项目做到了流程设计可视化和流程运行结果可视化. 本期发布的版本中实现了中间的运行过程的实时可视化,和流程状态持久化 ...

  3. 状态 :睡眠中,进程ID:13431,yum提示Another app is currently holding the yum lock; waiting for it to exit...

    问题描述: 今天想在虚拟机上重新安装docker然后使用到yum命令报错: 解决办法: [root@localhost ~]# rm -f /var/run/yum.pid 然后重新运行刚才的yum命 ...

  4. [WPF] 使用 HandyControl 的 CirclePanel 画出表盘刻度

    1. 前言 最近需要一个 WPF 的表盘控件,之前 Cyril-hcj 写过一篇不错的博客 <WPF在圆上画出刻度线>,里面介绍了一些原理及详细实现的代码: double radius = ...

  5. Linux虚拟机启动报错operating system not found解决步骤

    此报错为硬盘上的启动代码丢失 实验准备步骤 1) 准备: dd if=/dev/zero of=/dev/nvme0n1 bs=446 count=1 2) 系统启动报错截图 修复步骤如下 第一步:选 ...

  6. PLSQL Developer安装详细步骤,小白,转发

    下载软件可以直接在百度网盘里面下载 链接:https://pan.baidu.com/s/1bZNJ71d2-hvkM6PTbdpgAA 提取码:t9sh 然后直接参考这个链接进行安装https:// ...

  7. 在Windows Server 2019上安装edge浏览器

    在Windows 2016和2019的正式版本中是不带Edge浏览器的.有些工具.网站也不支持IE浏览器了.对于偶尔需要在服务器上访问这些站点的管理员来说有些不方便.不过可以通过安装三方浏览器或者Ed ...

  8. 前端必读:如何在 JavaScript 中使用SpreadJS导入和导出 Excel 文件

    JavaScript在前端领域占据着绝对的统治地位,目前更是从浏览器到服务端,移动端,嵌入式,几乎所有的所有的应用领域都可以使用它.技术圈有一句很经典的话"凡是能用JavaScript实现的 ...

  9. Go 源码解读|如何用好 errors 库的 errors.Is() 与 errors.As() 方法

    前言 快一个月没有更新技术文章了,这段时间投注了较多的时间学习字节的开源项目 Kitex/Hertz ,并维护一些简单的 issue ,有兴趣的同学也可以去了解: https://www.cloudw ...

  10. 【持久层框架】- SpringData - JPA

    SpringData - JPA 生命不息,写作不止 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长! JPA简 ...