前言

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

废话少说,出招吧!

正文

2.1 准备工作

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

然后创建默认 DBContext 实体类

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

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

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

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

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

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

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

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

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

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

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

.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. 持久化-DLL劫持

    持久化-DLL劫持 原理 通过篡改.替换和代理原dll文件来达到劫持. 原理演示 假定演练流程 假定我们要劫持的目标是 c:\temp\legit.dll 获取 c:\temp\legit.dll 所 ...

  2. 【ACG】博主在专栏更新内容后,及时通知关注他的用户去阅读

    ​ 业务场景 当用户打开应用时,系统发送Push消息给用户,向用户推荐博主信息.用户关注博主后,将保存用户的订阅信息,当关注的博主更新内容时,向订阅的用户发送短信,提醒用户及时查看最新内容.从而持续增 ...

  3. MAC MySQL安装配置

    1. 下载 下载地址:https://dev.mysql.com/downloads/mysql/ 注意选择对应的版本,M系列芯片对应ARM 2. 安装 参考官网教程, 点击地址查看, 一直点击继续即 ...

  4. go 中解析JSON的三种姿势

    背景 这是一篇写给0-1年新人的文章,短平快的教会你如何解析json字符串. 示例Json 假设有如下json字符串: { "userName":"admin" ...

  5. 如何为 SAST 工具设置误报基准?

    许多 SAST 工具都无法避免误报的问题.这些工具经常报告一些实际不存在的漏洞,这种不准确性让安全团队耗费大量时间来对误报进行分类和处理,这时设置误报基准就显得十分必要. 通过设置误报基准,安全团队可 ...

  6. 路径参数和数值校验: Path_Parameters_and_Numeric_Validations

    官方文档地址: https://fastapi.tiangolo.com/zh/tutorial/path-params-numeric-validations/ # -*- coding: UTF- ...

  7. filebeat知识点

    在Filebeat的根目录下,有一个叫做filebeat.yml的文件. filebeat.inputs: - type: log enabled: true paths: - ./sample.lo ...

  8. CentOS6 配置阿里云 NTP 服务

    本文以Centos 6.5为例介绍如何修改Linux实例时区,以及开启和配置Linux NTP服务,保证实例本地时间精确同步. 前提条件 NTP服务的通信端口为UDP 123,设置NTP服务之前请确保 ...

  9. 【前端必会】前端开发利器VSCode

    介绍 工欲善其事必先利其器,开发工具方面选择一个自己用的顺手的,这里就用VSCode 安装参考 https://www.runoob.com/w3cnote/vscode-tutorial.html ...

  10. C#-4 方法

    一 何为方法 方法是一块具有名称的代码,是类的函数成员. 方法主要分为方法头和方法体. void Method() { 语句1: 语句2: } 二 类型推断和var关键字 var sum = 15; ...