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. web聊天相关知识

    http相关知识 http是无状态,请求,响应模式的通信模式,就是用户每次通过浏览器点击一下页面,都需要重新与web服务器建立一下连接,且发送自己的 session id 给服务器端以使服务器端验证此 ...

  2. Modules:template

    ylbtech-Modules: 1.返回顶部 1.   2. 2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   7.返回顶部   8.返回顶部   9.返 ...

  3. CountDownLatch的介绍和使用

    1.类介绍 java.util.concurrent 类 CountDownLatch java.lang.Object java.util.concurrent.CountDownLatch 一个同 ...

  4. MySQL 学习五 SQL实用函数

    0 select now() 显示当前时间. 1 select char_length('andyqan')   显示字符长度. 2 日期格式化         select date_format( ...

  5. PHP类(三)-类的封装

    设置私有成员 使用private关键字来设置私有成员,完成对成员的封装,封装后的成员在对象的外部不能被访问,如果访问会出现错误,在对象的内部能访问被封装的成员属性和方法. <?php class ...

  6. 2016.7.27 VS搜索正则表达式,在UltraEdit中可选用Perl正则引擎,按C#语法搜索

    表达式 语法 说明 任一字符 . 匹配除换行符外的任何一个字符. 最多 0 项或更多 * 匹配前面表达式的 0 个或更多搜索项. 最多一项或更多 + 匹配前面表达式的至少一个搜索项. 最少 0 项或更 ...

  7. SpringBoot外部配置

    Spring Boot的配置文件 Spring Boot使用一个全局的配置文件application.properties或者application.yml(yaml语言的配置文件),放置在src/m ...

  8. python中注释的书写

    与c和c++的//不同的是,在python中我们使用#来进行注释 每个#所在的那一行都可以叫做注释:

  9. SpringBoot表单验证

    需求:年龄在18岁以下的女生不能注册 处理器中的写法: 实体类中的写法:

  10. MSSQL 数据库日志爆涨

    解决方法有两种,现只用最简单的方法: 1.数据库属性----选项----恢复模式由完整改为简单--确定 2.右击数据库---任务---收缩 3.数据库属性----选项----恢复模式由简单改为完整-- ...