标签:驱动 ola c# bottle ring var sha OLE delete
本身MongoDB直接支持的是Bson文档,Bson文档在C#的官方驱动中对应的是BsonDocument类:
var bsonDoc = new BsonDocument()
{
["_id"] = "123",
["Name"] = "Jack",
["Age"] = 32,
};
由于Bson和Json本身非常类似,所以它和Json一样,和.net对象之间互相转换是非常容易的。
public class Person
{
public string Id { get; set; } = "123";
public string Name { get; set; }
public int Age { get; set; }
}
var person = BsonSerializer.Deserialize<Person>(bsonDoc);
var doc = person.ToBsonDocument();
MongoDB本身的增删改查都是直接针对Bson文档进行的:
var collection = database.GetCollection<BsonDocument>("foo");
collection.InsertOne(bsonDoc);
但为了使用方便,也可以使用强类型的集合。
var collection = database.GetCollection<Person>("foo");
var person = new Person()
{
Id = "365",
Name = "Jack",
Age = 32,
};
//插入
collection.InsertOne(person);
//查询
collection.Find(i => i.Name == "Jack");
//更新
collection.ReplaceOne(i => i.Id == "365", person);
//删除
collection.DeleteOne(i => i.Id == "365");
由于支持Linq,用起来还是非常方便的。当然,也可以使用MongoDb本身的查询功能。
//查询
result = collection.Find(Builders<Person>.Filter.Eq(i=>i.Name, "Jack")).ToList();
//更新
collection.ReplaceOne(Builders<Person>.Filter.Eq(i => i.Id, "365"), person);
//更新部分字段
collection.UpdateOne(Builders<Person>.Filter.Eq(i => i.Id, "365"),
Builders<Person>.Update.Set(i => i.Age, 30));
//删除
collection.DeleteOne(Builders<Person>.Filter.Eq(i => i.Id, "365"));
甚至的,如果也可以使用MongDB的命令,也可以直接使用Mongo命令,更加简洁。
//查询
result = collection.Find("{ Name: ‘Jack‘ }").ToList();
//更新
collection.UpdateOne("{Name: ‘Jack‘ }", "{$set:{‘Age‘:‘37‘}}");
//删除
collection.DeleteOne("{Name: ‘Jack‘ }");
这种方式类似Sql,非常简洁,但是失去了类型检查,至于如何使用,则需要看具体场合了。
参考文档:
标签:驱动 ola c# bottle ring var sha OLE delete
原文地址:https://www.cnblogs.com/TianFang/p/8836417.html