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. 关于Java中集合的讲解~

    http://blog.csdn.net/zccst/article/details/5092816 comparable& Comparator 都是用来实现集合中的排序的,只是Compar ...

  2. java 字符串和集合互相转换

    今天在写项目的时候遇到一个问题,就是要把得到的一个集合转换成字符串,发现 import org.apache.commons.lang.StringUtils; 有这么一个简单的方法:String s ...

  3. windows中git输错密码后不能重新输入的问题

    当输入密码错误后,git会把密码保存在windows的你的当前用户名的缓存中. 我们可以在控制面板中寻找到这个缓存,再删掉就可以了. 首先,打开“控制面板”,把“查看方式”改为“大图标”,再打开“用户 ...

  4. div的作用

    <div></div>主要是用来设置涵盖一个区块为主,所谓的区块是包含一行以上的数据,所以在<div></div>的开始之前与结束后,浏览都会自动换行, ...

  5. 使用mui框架后a标签无法跳转

    由于最近工作项目上使用到前台mui框架,笔者在将H5转换为jsp时,遇见各种各样问题,原因归结为对mui框架不熟悉,今天就遇见一个特别奇怪的问题,界面中超链接<a>标签无法跳转,笔者试着添 ...

  6. Tiny4412 Linux 内核启动流程

    Linux内核的启动分为压缩内核和非压缩内核两种,这里我们以压缩内核为例.压缩内核运行时,将运行一段解压缩程序,得到真正的内核镜像,然后跳转到内核镜像运行.此时,Linux进入非压缩内核入口,在非压缩 ...

  7. EF CODEFIRST WITH ORACLE

    摸索了半天,运行通过了,但是还是有一点坑的,对于初次使用的人来说,可能会遇到几个问题 首先安装两个dll 如果你已经下载好了dll Oracle.ManagedDataAccess.dll Oracl ...

  8. IE的haslayout

    haslayout 是Windows Internet Explorer渲染引擎的一个内部组成部分.在InternetExplorer中,一个元素要么自己对自身的内容进行计算大小和组织,要么依赖于父元 ...

  9. java多线程环境单例模式实现详解

    Abstract 在开发中,如果某个实例的创建需要消耗很多系统资源,那么我们通常会使用惰性加载机制,也就是说只有当使用到这个实例的时候才会创建这个实例,这个好处在单例模式中得到了广泛应用.这个机制在s ...

  10. HDU 4912 LCA + 贪心

    题意及思路 说一下为什么按LCA深度从深到浅贪心是对的.我们可以直观感受一下,一条的路径会影响以这个lca为根的这颗树中的链,而深度越深,影响范围越小,所以先选影响范围小的路径. #include & ...