C# 操作 MongoDB
今项目使用Mongodb,C#操作MongoDB使用MongoDB.Driver.dll库(Nuget),写了个小Demo,如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using MongoDB.Driver; namespace MongoBase
{
internal class MongoBase
{
private static string _connStr = "mongodb://root:123456@127.0.0.1:27017";
private static string _dbName = "test"; private static MongoUrl url = new MongoUrl(_connStr);
private static MongoClient client = new MongoClient(url);
public static IMongoDatabase db = client.GetDatabase(_dbName);
} public class MongoHelper<TEntity>
{
public string Name => typeof(TEntity).Name;
public IMongoCollection<TEntity> Collection => MongoBase.db.GetCollection<TEntity>(Name);
public List<TEntity> Queryable => Collection.AsQueryable().ToList(); public FilterDefinitionBuilder<TEntity> Filter => Builders<TEntity>.Filter; public UpdateDefinitionBuilder<TEntity> Update => Builders<TEntity>.Update; public ProjectionDefinitionBuilder<TEntity>Projection=> Builders<TEntity>.Projection;
} }
using System;
using System.Collections.Generic;
using System.Text;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes; namespace MongoBase
{
public class EntityBase
{
public EntityBase()
{
_id = ObjectId.GenerateNewId();
createTime = DateTime.Now;
isDelete = false;
id = _id.ToString();
}
[BsonId]
public ObjectId _id { get; set; }
public string id { get; set; } public DateTime? createTime { get; set; } public bool? isDelete { get; set; } } }
using MongoBase;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes; namespace ConsoleApp5
{
internal class Video : EntityBase
{
public string Title { get; set; } public string Category { get; set; } public int Minutes { get; set; } public string Comments { get; set; }
}
}
using System;
using System.Collections.Generic;
using MongoBase;
using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.Linq; namespace ConsoleApp5
{
class Program
{
static void Main(string[] args)
{
MongoHelper<Video> videoHelper = new MongoHelper<Video>(); //新增
videoHelper.Collection.InsertOne(new Video()
{
Title = "ggg"
});
//查找集合
var list = videoHelper.Collection.Find(videoHelper.Filter.Eq(e => e.Category, "Horror")).ToList(); list = videoHelper.Collection.Find(videoHelper.Filter.Eq(e => e.Title, "ggg")).ToList(); //方式一:拼接查找条件
List<FilterDefinition<Video>> listFilter = new List<FilterDefinition<Video>>()
{
videoHelper.Filter.Eq(e=>e.Minutes,),
videoHelper.Filter.Eq(e=>e.Title,"The Perfect Developer")
}; //根据查找多个条件筛选集合
list = videoHelper.Collection.Find(videoHelper.Filter.And(listFilter)).ToList(); //方式二:拼接查找条件
var filter = videoHelper.Filter.Eq(e => e.Title, "cys") & videoHelper.Filter.Eq(e => e.Category, "cys"); list = videoHelper.Collection.Find(filter).ToList(); //拼接更新字段
var updateDefinition = new List<UpdateDefinition<Video>>()
{
videoHelper.Update.Set(e=>e.Title, "cys"),
videoHelper.Update.Set(e=>e.Category, "cys")
}; //按照条件更新
videoHelper.Collection.UpdateMany(videoHelper.Filter.And(listFilter),
videoHelper.Update.Combine(updateDefinition)); //删除
videoHelper.Collection.DeleteOne(videoHelper.Filter.Eq(e => e.Title, "Lost In Frankfurt am Main")); //获取某个字段
filter = videoHelper.Filter.Eq(e => e.Title, "ggg");
var bson = videoHelper.Collection.Find(filter).Project(videoHelper.Projection.Include(e => e.Title).Exclude(e => e._id)).FirstOrDefault();
}
}
}
注:时间类型的属性,存入MongoDB后会比北京时间少8小时,是由于默认写入的是世界标准时间,可在时间类型属性上添加
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime createTime { get; set; }
的特性,这样取出来之后就是北京时间。
C# 操作 MongoDB的更多相关文章
- mongoose - 让node.js高效操作mongodb
Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...
- 【MongoDB for Java】Java操作MongoDB
上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过 ...
- PHP操作MongoDB学习笔记
<?php/*** PHP操作MongoDB学习笔记*///*************************//** 连接MongoDB数据库 **////*************** ...
- PHP操作Mongodb之增删改查篇
之前,我讲解过PHP中mongodb扩展的安装,及启动,链接操作[忘记了?去看看吧!PHP操作Mongodb之一].本文主要就是讲在PHP中Mongodb的增加,查询,修改及删除数据的操作. 1.增加 ...
- PHP操作Mongodb之高级查询篇
本文主要讲解PHP中Mongodb的除了增删改查的一些其他操作. 在PHP操作Mongodb之增删改查篇中我们介绍了PHP中Mongodb的增加.删除.修改及查询数据的操作.本文主要是将查询时用到的高 ...
- php操作mongodb中的ISODate格式日期
mongodb 中数据记录的日期格式为"dateCreated" : ISODate("2011-12-20T07:22:50.836Z")经过翻阅php官网中 ...
- nodejs操作mongodb
一.下载地址 https://www.mongodb.com/download-center#community 二.控制台操作mongodb 1.安装完后添加环境变量. 2.在某个根目录下新建dat ...
- nodejs操作mongodb数据库封装DB类
这个DB类也算是我经历了3个实际项目应用的,现分享出来,有需要的请借鉴批评. 上面的注释都挺详细的,我使用到了nodejs的插件mongoose,用mongoose操作mongodb其实蛮方便的. 关 ...
- Python 操作 MongoDB
原文 这篇文章主要介绍了使用Python脚本操作MongoDB的教程,MongoDB作为非关系型数据库得到了很大的宣传力度,而市面上的教程一般都是讲解JavaScript的脚本操作,本文则是基于Pyt ...
- Python 操作 mongodb 数据库
原文地址:https://serholiu.com/python-mongodb 这几天在学习Python Web开发,于 是做准备做一个博客来练练手,当然,只是练手的,博客界有WordPress这样 ...
随机推荐
- Spring security 浅谈用户验证机制
step1:首先ApplicationUserDetailsService需要实现UserDetailsService接口(在 org.springframework.security.core.us ...
- entering power save mode无法开机解决办法
标签(空格分隔): 服务器 问题描述: 服务器型号为IBM system x 3755 m3.服务器在搬动之前运行良好,换完位置之后出现按完电源键后无法进入系统,通过显示器看到entering pow ...
- 消息队列函数(msgget、msgctl、msgsnd、msgrcv)及其范例
消息队列函数由msgget.msgctl.msgsnd.msgrcv四个函数组成.下面的表格列出了这四个函数的函数原型及其具体说明. 1. msgget函数原型 msgget(得到消息队列标识符或 ...
- nandflash裸机程序分析
它包含7个文件: head.S init.c main.c Makefile nand.c nand.lds 我们之前的程序都是在nandflash的前4k放代码,上电后自动拷贝到SRAM中,之后将S ...
- 40个Java多线程问题总结【转】
1.多线程有什么用? 一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡.所谓”知其然知其所以然”,”会用”只是”知其然”,”为什么用”才是”知其所以然 ...
- python's thirteenth day for me 迭代器 生成器
迭代器: for 循环可以循环的就是可迭代对象. 可迭代对象:str, list, tuple, dict, set, range. 迭代器:f1文件句柄. 可迭代协议: 可以被迭代要满足的要求就叫做 ...
- leetcode594
public class Solution { public int FindLHS(int[] nums) { Dictionary<int, int> dic = new Dictio ...
- Struts2 result type(结果类型)
转自:http://www.cnblogs.com/liaojie970/p/7151103.html 在struts2框架中,当action处理完之后,就应该向用户返回结果信息,该任务被分为两部分: ...
- [原创]Java使用反射及自定义注解实现对象差异性比较
Java项目C中 有一处逻辑,对于资源数据(类型为ResourceItem,拥有int/double/boolean/String类型数十个字段),需要比对资源数据每次变更的差异,并描述出变更情况.并 ...
- solr facet查询及solrj 读取facet数据(相当有用)
原文出自:http://www.coin163.com/java/docs/201310/d_3010029802.html 一. Facet 简介 Facet 是 solr 的高级搜索功能之一 ...