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. eclipse项目中将普通文件夹转化成资源文件夹

    1.点选该文件夹 2.右键属性Properties 3.选择属性:Build Path 4.点选属性:Use as  Source Folder ......等待变成资源文件夹 参考更详细的: ecl ...

  2. mariaDB 安装/卸载+启动/关闭 服务

    1.设置环境变量 无论是用户环境变量还是系统环境变量 2.启动服务 进入根目录 名字根据 --install 后的 参数来决定 叫MariaDB,MySQL 都可以 mysqld.exe --inst ...

  3. springmvc----demo3---rest风格---bai

    input_stu_path.jsp: showinput_stu_path.jsp:

  4. Drools学习笔记1—规则文件

    Facts(即普通的POJO) 指普通业务对象插入到Workingmemory后的对象规则可以对fact对象进行任意的对象操作是规则与应用系统交换的桥梁返回FactHandler对象,是插入到Work ...

  5. Oracle——基础知识(一)

       一.Oracle中的数据类型 1.字符串类型.如:char.nchar.varchar2.nvarchar2.2.数值类型.如:int.number(p,s).integer.smallint. ...

  6. 10-14C#基础--语句(switch....case和for...循环)

    10-14C#基础--语句(2) 一.课前作业:“跟电脑猜拳” 二.switch(定义的变量,参数值)......case.... 注:switch...case大多用于值类型的判断,这里不同于if表 ...

  7. ios中的三种弹框《转》

    目前为止,已经知道3种IOS弹框: 1.系统弹框-底部弹框 UIActionSheet  (1)用法:处理用户非常危险的操作,比如注销系统等 (2)举例: UIActionSheet *sheet = ...

  8. Mysql Hive 通用的行列转换

    就是简单的一个字符串拼接,意义和所用场景自己体会下 insert into table agent_library1 select concat_ws(':',collect_set(name)) a ...

  9. Spring 已看 没用

    注解 @Autwired 依赖注入  作用: 自动按照类型注入.当使用注解注入属性时,set方法可以省略.它只能注入其他bean类型.当有多个类型匹配时,使用要注入的对象变量名称作为bean的id,在 ...

  10. ROS Learning-015 learning_tf(编程) 编写一个监听器程序 (Python版)

    ROS Indigo learning_tf-02 编写一个 监听器 程序 (Python版) 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 1 ...