Back to
top
MongoDB CRUD - 杨挺的博客 | Tommy's Blog

MongoDB CRUD

"Hello MongoDB"

Posted by Tommy on May 31, 2016

“Let’s Start. ”

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 ("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 ("MyCollection");

//注意此处使用的是Person与上面的BsonDocument对应,由于此处 的GetCollection 方法是MongoDB自己封装的方法,是泛型的。

await collection.InsertOneAsync(new Person { Name = “Tommy” });

var list = await collection.Find(x => x.Name == “Tommy”).ToListAsync();

//此处的查询还有另外一种方法,就是使用var filter = Builders .Filter.Eq(, );

//例如:var filter = Builders .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 ("MyCollection");

var filter = Builders .Filter.Eq("Name", "Tommy");

var update = Builders .Update.Set("Address" , "AnhuiAnqing");

//当然此处使用的都是Person类,你也可以使用BsonDocument;但是在项目开发中基本都是自己定义的类。

//使用Document的写法:https://docs.mongodb.org/getting-started/csharp/update/

var result = await collection.UpdateOneAsync(filter, update);

D删除

var client = new MongoClient(“mongodb://localhost:27017”);

var database = client.GetDatabase(“MyDb”);

var collection = database.GetCollection ("MyCollection");

var filter = Builders .Filter.Eq("Name", "Tommy");

//使用Document的写法:https://docs.mongodb.org/getting-started/csharp/remove/

var result = await collection.DeleteManyAsync(filter);