Mongodb是3.2.7版本
最近在学习mongodb数据库在网上找到的都不是2.X版本以下的,因为驱动从2.X以后修改了很多,以前不支持linq现2.X也支持了,
Mongodb 启动服务就不说了现在就来看看基本的操作
上代码:
首先定义一个模型用来测试操作
public class Persion { //引用using MongoDB.Bson.Serialization.Attributes; [BsonId] public string _id; public string Name; public int age; public string Email; public string TableName { get{return "persion"; } } }
将mongob C#driver 添加到引用,引用方式可以通过Nuget添加 或者直接到官网去下载然后添加到项目中,
配置创建mongodbClient 注:【以前的版本是MongoServer】并做好配置
地址可以使用远程的或者是本地的,现在是使用本地的
//数据库连接字符串 static string conn = "mongodb://127.0.0.1:27017"; //数据库名称 static string database = "appdb";//数据库名 static MongoUrl url = new MongoUrl(conn); static MongoClient ci = new MongoClient(url);//创建mongoClient static IMongoDatabase db = ci.GetDatabase(database);//获取数据库
以下就是数据的具体操作方法
//添加数据 public static void InsertUser(Persion per = null) { //链接到表,数据库中存不存在表没关系,不存在mongodb会自动创建一个Collection //("persion")Collection也叫表 var colls = db.GetCollection<Persion>("persion"); per = new Persion { _id = Guid.NewGuid().ToString(), Name = "ynland@126.com", age = 12 }; colls.InsertOne(per); } //修改 public static void Updat() { //获取数据 var colls = db.GetCollection<Persion>("persion"); var model = colls.Find(c => c.Name =="ynland" ).FirstOrDefault();//筛选数据 //条件。相当于where后面的 Filte.Eq 相当于等号 Filter.Eq("字段",匹配值) var filter = MongoDB.Driver.Builders<Persion>.Filter.Eq("Name", model.Name); //修改的值,set("字段","修改后值") 注意 字段要和数据库中字段匹配,不匹配找不到会自动新建一个字段并赋值 var update = MongoDB.Driver.Builders<Persion>.Update.Set("age", "66"); // colls.UpdateOne(filter, update);//修改一条数据 UpdateResult res= colls.UpdateMany(filter, update);//多条修改 } public static void DeleteInfo() { var colls = db.GetCollection<Persion>("persion"); colls.DeleteOne(c => c.age == 100); } //获取数据 public static void GetAllInfo() { //数据类型要一致才能不序列化 var t = db.GetCollection<Persion>("persion").Find(c => c.Name!=string.Empty); List<Persion> list = t.ToList(); }
在修改的时候筛选,和set方便地方
筛选的条件Filter.XXX("字段名",“陪配值”)这样来筛选
在set的时候可以set().set().set().set().........这样来赋值
全部代码:
using System; using System.Collections.Generic; using System.Linq; using System.Web;using MongoDB.Driver; using MongoDB.Bson; using MongoDB.Driver.Linq; usingMongoDB.Bson.Serialization.Attributes; namespace MongoTest1 { public static classMongoUnitily { //数据库连接字符串 static string conn = "mongodb://127.0.0.1:27017"; //数据库名称 static string database = "appdb";//数据库名 static MongoUrl url = newMongoUrl(conn); static MongoClient ci = new MongoClient(url);//创建mongoClient static IMongoDatabase db = ci.GetDatabase(database);//获取数据库 //添加数据 public static void InsertUser(Persion per = null) { //链接到表,数据库中存不存在表没关系,不存在mongodb会自动创建一个Collection //("persion")Collection也叫表 var colls = db.GetCollection<Persion>("persion"); per = new Persion { _id = Guid.NewGuid().ToString(), Name = "ynland@126.com", age = 12 }; colls.InsertOne(per); } //修改 public static void Updat() { //获取数据 var colls = db.GetCollection<Persion>("persion"); var model = colls.Find(c => c.Name =="ynland" ).FirstOrDefault();//筛选数据 //条件。相当于where后面的 Filte.Eq 相当于等号 Filter.Eq("字段",匹配值) var filter = MongoDB.Driver.Builders<Persion>.Filter.AnyEq("Name", model.Name); //修改的值,set("字段","修改后值") 注意 字段要和数据库中字段匹配,不匹配找不到会自动新建一个字段并赋值 var update = MongoDB.Driver.Builders<Persion>.Update.Set("age", "66"); // colls.UpdateOne(filter, update);//修改一条数据 UpdateResult res= colls.UpdateMany(filter, update);//多条修改 } public static void DeleteInfo() { var colls = db.GetCollection<Persion>("persion"); colls.DeleteOne(c => c.age == 100); } //获取数据public static void GetAllInfo() { //数据类型要一致才能不序列化 var t = db.GetCollection<Persion>("persion").Find(c => c.Name!=string.Empty); List<Persion> list =t.ToList(); } } } public class Persion { //引用using MongoDB.Bson.Serialization.Attributes; [BsonId] public string _id; public string Name;public int age; public string Email; public string TableName { get{return "persion"; } } }View Code