Retrieve(检索、查询):
分两种(一种是插入对象没有自定义; 第二种就是自定义插入对象)
这两种情况下的区别就是插入数据库中的文档类型不一样,一个是BsonDocument,一个是自定义对象(下面会有例子),分别使用两种不同的方式
Create(添加)
Untyped Documents
using MongoDB.Bson;
using MongoDB.Driver;
 
var client = new MongoClient("mongodb://localhost:27017");
var database = client.GetDatabase("MyDb");
var collection = client.GetCollection<BsonDocument>("MyCollection");
 
await collection.InsertOneAsync(new BsonDocument("Name", "Tommy"));
//如果此处你的函数不是异步的,就不写await,写的话会报错,如果你想写的话就自己写个异步函数,这样的话就没问题了。官网建议使用异步方式。想想也知道异步好一些啊!
//异步函数写法就是public async void Insert(){}
var list = await collection.Find(new BsonDocument("Name", "Tommy")).ToListAsync();
 
foreach(var document in list)
{
   Console.WriteLine(document["Name"]);
}
 
 
Typed Documents
using MongoDB.Bson;
using MongoDB.Driver;
 
public class Person
{
     public ObjectId Id { get; set; }
     //此处的ObjectId类型的属性一定要加,不然在查询的时候会报错,因为数据库中在添加文档的时候会自动添加一个ObjectId类型的_id元素,这个是MongoDB数据库的特点。
     //个人觉得就像我们其它的关系型数据库的主键一样
     public string Name { get; set; }
     public string Address { get; set; }
}
 
var client = new MongoClient("mongodb://localhost:27017");
var database = client.GetDatabase("MyDb");
var collection = client.GetCollection<Person>("MyCollection");
//注意此处使用的是Person与上面的BsonDocument对应,由于此处 的GetCollection<T>方法是MongoDB自己封装的方法,是泛型的。
 
await collection.InsertOneAsync(new Person { Name = "Tommy" });
var list = await collection.Find(x => x.Name == "Tommy").ToListAsync();
//此处的查询还有另外一种方法,就是使用var filter = Builders<Person>.Filter.Eq(<field>, <value>);
//例如:var filter = Builders<Person>.Filter.Eq("Name", "Tommy");var list = await collection.Find(filter).ToListAsync();
foreach(var person in list)
{
     Console.WriteLine(person.Name);
}
 
下面介绍一下U(Update)和D(Delete)
U更新:
var client = new MongoClient("mongodb://localhost:27017");
var database = client.GetDatabase("MyDb");
var collection = database.GetCollection<Person>("MyCollection");
var filter = Builders<Person >.Filter.Eq("Name", "Tommy");
var update = Builders<Person >.Update.Set("Address" , "AnhuiAnqing");
//当然此处使用的都是Person类,你也可以使用BsonDocument;但是在项目开发中基本都是自己定义的类。
var result = await collection.UpdateOneAsync(filter, update);
 
D删除:
var client = new MongoClient("mongodb://localhost:27017");
var database = client.GetDatabase("MyDb");
var collection = database.GetCollection<Person>("MyCollection");
var filter = Builders<Person >.Filter.Eq("Name", "Tommy");
var result = await collection.DeleteManyAsync(filter);

MongoDB3.2(C#版) CRUD的更多相关文章

  1. (二)Hibernate4 CRUD 体验

    所有的学习我们必须先搭建好hibernate的环境(1.导入对应的jar包,2.hibernate.cfg.xml,3.XXXX.hbm.xml) 第一节:HibernateUtil 封装 导入对应的 ...

  2. Hibernate学习2—Hibernate4 CRUD体验初步

    接着上一节,工程结构: jar包没有变化: 一.HibernateUtil 封装: com.cy.util.HibernateUtil.java: package com.cy.util; impor ...

  3. Java进阶知识10 Hibernate一对多_多对一双向关联(Annotation+XML实现)

    本文知识点(目录): 1.Annotation 注解版(只是测试建表)    2.XML版 的实现(只是测试建表)    3.附录(Annotation 注解版CRUD操作)[注解版有个问题:插入值时 ...

  4. 在linux中 部署 mongo 数据库服务端

    1 首先需要一台linux服务器(我用的redhat linux,其它的也大同小异), 玩一玩的话,推荐亚马逊上面去创建一个免费的linux服务器,有关具体创建linux服务器不在这赘述. https ...

  5. 【串线篇】Mybatis拓展之MBG

    MBG-逆向工程 一.介绍 MBG:MyBatis Generator:代码生成器: MyBatis官方提供的代码生成器:帮我们逆向生成: 正向: table----javaBean---BookDa ...

  6. Dynamics CRM 2011编程系列(60):JS编程之CRUD辅助类(JQuery版)

    今天给大家分享一个JQuery版的REST辅助类,在一年前我分享过一个只能在IE环境下运行的REST辅助类:<JS编程之实体CRUD辅助类 >.为什么要推出JQuery版的CRUD辅助类呢 ...

  7. Node教程——API接口开发(Node版的CRUD通用接口的搭建)(MangoDB+Express_Version2)

    1. 概述 时间跨度有点大,之前就跟大家唠嗑过一些知识点,也开启了一个Node书写一个后台api项目的开始,出于各种原因,迟迟没有更新博文.现在我把这个坑填上,如果你还有阅读过我之前的文章,我建议你先 ...

  8. 实体类调用泛型父类中的静态方法中执行CRUD——第二版

    using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; namespa ...

  9. MongoDB3.4 shell CRUD操作

    输入db,显示你正在操作的数据库:切换数据库,输入use dbName,如果数据库不存在的话会自动帮我们创建一个:使用show dbs可以显示所有可用的数据库. 测试数据在文末 插入文档 插入操作的行 ...

随机推荐

  1. Oracle 高可用作业测试

    1.RAC 是一种: A 分布式数据库B 内存共享多节点数据库C 能够保护数据安全的架构 2.RAC 和CRS 的区别是: A 前者表示一种架构,后者是一套软件B 前者表示一套软件,后者是一种架构 C ...

  2. 虚幻引擎4设置Visual Studio

    转自:http://www.unrealchina.net/portal.php?mod=view&aid=149 设置Visual Studio和虚幻引擎4协同工作有利于提高开发人员使用UE ...

  3. C# IL中间代码注入实现切面编程

    背景及现状:之前分享的那篇“面向切面编程–渲染监控日志记录方案”中提供了利用RealProxy作为代理类来生成代理的面向切面的编程方法,那个方法可以实现面向切面编程进行日志记录,现在渲染主程序也是采用 ...

  4. MyBatis基于注解----增删改查

    select sysdate from dual; --账户表 --账户编号,账户卡号,账户密码,账户余额,账户状态,创建时间 drop table account; create table acc ...

  5. C Primer Plus学习笔记(八)- 函数

    函数简介 函数(function)是完成特定任务的独立程序代码单元 使用函数可以省去编写重复代码的苦差,函数能让程序更加模块化,提高程序代码的可读性,更方便后期修改.完善 #include <s ...

  6. tomcat 三种部署方式以及server.xml文件的几个属性详解

    一.直接将web项目文件件拷贝到webapps目录中 这是最常用的方式,Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用.如果你想要修改这个默认 ...

  7. mui封装的ajax请求

    由于项目中引进MUI框架,所以就不需要引进jquery,但需要和后台交互时,常写为jquery格式:所以笔者觉得有必要将mui封装的ajax请求在这里提一下: 1,mui框架基于htm5plus的XM ...

  8. css背景图片位置:background的position(转)

    css背景图片位置:background的position   position的两个参数:水平方向的位置,垂直方向的位置----------该位置是指背景图片相对于前景对象的 1.backgroun ...

  9. 常用linux配置文件

    /etc/hosts:用户IP与域名的对应解析表/etc/sysconfig/network:机器名.网卡启动.网关等配置/etc/fstab:记录开机自动挂载的文件系统/etc/rc.local:开 ...

  10. unity3D中制作天空盒(Skyboxes)

    1.首先制作图片,需要把图片用Ps制作成psd格式,制作6张 2.把6个psd文件导入工程目录 Assets下, 3.在project属性列表中选中Assets,单击鼠标右键选择 Create —&g ...