本身MongoDB直接支持的是Bson文档,Bson文档在C#的官方驱动中对应的是BsonDocument类:

var bsonDoc = new BsonDocument()
{
    ["_id"]  = "123",
    ["Name"] = "Jack",
    ["Age"]  = 32,
};

由于Bson和Json本身非常类似,所以它和Json一样,和.net对象之间互相转换是非常容易的。

public class Person
{
    public string Id   { get; set; } = "123";
    public string Name { get; set; }
    public int    Age  { get; set; }
} var person = BsonSerializer.Deserialize<Person>(bsonDoc);
var doc = person.ToBsonDocument();

MongoDB本身的增删改查都是直接针对Bson文档进行的:

var collection = database.GetCollection<BsonDocument>("foo");
collection.InsertOne(bsonDoc);

为了使用方便,也可以使用强类型的集合。

var collection = database.GetCollection<Person>("foo");

var person = new Person()
{
Id = "",
Name = "Jack",
Age = ,
}; //插入
collection.InsertOne(person); //查询
collection.Find(i => i.Name == "Jack"); //更新
collection.ReplaceOne(i => i.Id == "", person); //删除
collection.DeleteOne(i => i.Id == "");

由于支持Linq,用起来还是非常方便的。当然,也可以使用MongoDb本身的查询功能。

//查询
result = collection.Find(Builders<Person>.Filter.Eq(i=>i.Name, "Jack")).ToList(); //更新
collection.ReplaceOne(Builders<Person>.Filter.Eq(i => i.Id, ""), person); //更新部分字段
collection.UpdateOne(Builders<Person>.Filter.Eq(i => i.Id, ""),
Builders<Person>.Update.Set(i => i.Age, )); //删除
collection.DeleteOne(Builders<Person>.Filter.Eq(i => i.Id, ""));

甚至的,如果熟悉MongDB的命令,也可以直接使用Mongo命令,更加简洁。

//查询
result = collection.Find("{ Name: 'Jack' }").ToList(); //更新
collection.UpdateOne("{Name: 'Jack' }", "{$set:{'Age':'37'}}"); //删除
collection.DeleteOne("{Name: 'Jack' }");

这种方式类似Sql,非常简洁,但是失去了类型检查,至于如何选择,则需要看具体场合了。

参考文档:

MongoDB简单使用 —— 基本操作的更多相关文章

  1. MongoDB学习:(二)MongoDB简单使用

    MongoDB学习:(二)MongoDB简单使用 MongoDB使用: 执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面 >mongo 提示该错误,说明我们系统缺少一个补丁,该 ...

  2. mongodb 简单部署方案及实例

    mongodb 简单部署方案及实例 转载:http://my.oschina.net/zhuzhu0129/blog/53290 第一节 准备工作 一 安装mongodb  我这里选用rehl 5.6 ...

  3. .Net Core MongoDB 简单操作。

    一:MongoDB 简单操作类.这里引用了MongoDB.Driver. using MongoDB.Bson; using MongoDB.Driver; using System; using S ...

  4. python和mongodb简单交互

    python和mongodb简单交互 1.安装pymongo: pip3 install pymongo 2.pymongo的简单用法: # /usr/bin/env python3 import p ...

  5. MongoDB简单CRUD场景

    MongoDB简单CRUD命令操作 (1)新建数据库:use 数据库名 (2)显示所有数据库:show dbs; (3)新建集合(两种方式)  隐式创建:在创建集合的同时往集合里面添加数据---db. ...

  6. MongoDB数据库(一):基本操作

    1.NoSQL的概念 "NoSQL"一词最早于1998年被用于一个轻量级的关系数据库的名字 随着web2.0的快速发展,NoSQL概念在2009年被提了出来 NoSQL最常见的解释 ...

  7. MongoDB入门_shell基本操作

    使用shell客户端连接mongoDB数据库 [root@localhost mongodb_simple]# ./bin/mongo /admin mongoDB的简单基本操作 1. mongoDB ...

  8. NodeJS+Express+MongoDB 简单实现数据录入及回显展示【适合新人刚接触学习】

    近期在看NodeJS相关 不得不说NodeJS+Express 进行网站开发是很不错,对于喜欢玩JS的来说真是很好的一种Web开发组合 在接触NodeJS时受平时Java或者C#中API接口等开发的思 ...

  9. linux下MongoDB客户端shell基本操作

    MongoDB 是一款NoSql数据库,没有固定的模式,即同一个集合中的不同文档结构可以不同,如:第一条记录{name:”xiaoming”},第二条记录:{name:”xiaoli”,age:15} ...

随机推荐

  1. es6笔记(3.1)三个点的“...”的作用

    展开运算符(spread operator) ES6中"..."的作用之一是,展开运算符. 顾名思义,它的作用是把某些结合数据展开. 在Array.Object.Set和Map上都 ...

  2. JS种this的四种用法

    记住以下四点: 1.没调用对象就指向全局对象 2.有对象就指向调用对象 3.用new构造就指向新对象 4.通过 apply 或 call 或 bind 来改变 this 的所指. 1.测试一:没调用对 ...

  3. Windows入侵问题排查

    1.深入分析,查找入侵原因 1.1 检查帐户和弱口令 1.查看服务器已有系统或应用帐户是否存在弱口令 检查说明:主要检查系统管理员帐户.网站后台帐户.数据库帐户以及其他应用程序(FTP.Tomcao. ...

  4. Linux 内核中断内幕【转】

    转自:http://www.ibm.com/developerworks/cn/linux/l-cn-linuxkernelint/ 本文对中断系统进行了全面的分析与探讨,主要包括中断控制器.中断分类 ...

  5. 自定义Web组件

    一.Session 1.面向对象基础 面向对象中通过索引的方式访问对象,需要内部实现 __getitem__ .__delitem__.__setitem__方法 +? 1 2 3 4 5 6 7 8 ...

  6. emulator: ERROR: x86 emulation currently requires hardware acceleration!Please ensure Intel HAXM is properly installed and usable.CPU acceleration status: HAX kernel module is not installed!

    Android Studio 1.0 已经放出来了,以后的Android平台开发激昂逐步从Eclipse向Android Studio迁移,为了能不落伍我也特意从Google下载了Android St ...

  7. nodejs mysql 执行多条sql语句

    执行多条查询语句 为了安全起见,默认情况下是不允许执行多条查询语句的.要使用多条查询语句的功能,就需要在创建数据库连接的时候打开这一功能: var connection = mysql.createC ...

  8. 通过微信Android和iOS版,看两大系统的差异

    由于设计师或者产品经理使用的移动设备大部分是iPhone,所以在做设计时,容易忽略Android和iOS的差异,按照自己的使用习惯进行设计,导致大部分设计师或产品经理做出的设计都是基于iOS规范或习惯 ...

  9. Ruby语言学习笔记

    在codecademy上开始玩ruby了 1.数据类型:boolean,string,number 变量直接用即可,不用声明(“拿来主义”) 运算符:+ - * / ** % == != && ...

  10. ****timeago.js插件:jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例

    前端 时间个性化 插件 jquery.timeago.js 关键词 : 时间格式化 刚刚 N分钟前 N小时前 N天前 N月前 N年前 MM-dd hh:mm  或者  yyyy-MM-dd 前端: & ...