C#驱动MongoDB的本质是将C#的操作代码转换为mongo shell,驱动的API也比较简单明了,方法名和js shell的方法名基本都保持一致,熟悉mongo shell后学习MongoDB的C#驱动是十分轻松的,直接看几个demo吧。
0.准备测试数据
使用js shell添加一些测试数据,如下:
use myDb
db.userinfos.insertMany([
{_id:1, name: "张三", age: 23,level:10, ename: { firstname: "san", lastname: "zhang"}, roles: ["vip","gen"]},
{_id:2, name: "李四", age: 24,level:20, ename: { firstname: "si", lastname: "li"}, roles:[ "vip"]},
{_id:3, name: "王五", age: 25,level:30, ename: { firstname: "wu", lastname: "wang"}, roles: ["gen","vip"]},
{_id:4, name: "赵六", age: 26,level:40, ename: { firstname: "liu", lastname: "zhao"}, roles: ["gen"] },
{_id:5, name: "田七", age: 27, ename: { firstname: "qi", lastname: "tian"}, address:'北京'},
{_id:6, name: "周八", age: 28,roles:["gen"], address:'上海'}
])
1 添加(InsertOne,InsertMany)
安装nuget包(或者执行命令 Install-Package MongoDB.Driver)
然后就可以使用C#操作MongoDB数据库了,看一个添加的demo:
classProgram
{static void Main(string[] args)
{//连接数据库
var client = new MongoClient("mongodb://root:root@192.168.100.3:27017/");//获取database
var mydb = client.GetDatabase("myDb");//获取collection
var collection = mydb.GetCollection("userinfos");//待添加的document
var doc = newBsonDocument{
{"_id",7},
{"name", "吴九"},
{"age", 29},
{"ename", newBsonDocument
{
{"firstname", "jiu"},
{"lastname", "wu"}
}
}
};//InsertOne()添加单条docment
collection.InsertOne(doc);
}
}
执行完成后,查看在NoSQLBooster中查询,看到已经添加成功了:
我们也可以是用 collection.InsertMany(IEnumerable docs) 来批量添加docment,这里就不再演示了。
2 查询(Find,Filter,Sort,Projection)
1.简单查询(Find、Filter)
查找name=“吴九"的记录
var client = new MongoClient("mongodb://root:root@192.168.100.3:27017/");//获取database
var mydb = client.GetDatabase("myDb");//获取collection
var collection = mydb.GetCollection("userinfos");//Fileter用于过滤,如查询name = 吴九的第一条记录
var filter = Builders.Filter;//Find(filter)进行查询
var doc = collection.Find(filter.Eq("name", "吴九")).FirstOrDefault();
Console.WriteLine(doc);
查询结果如下:
如果我们想查询所有的记录,可以设置过滤器为空,代码为: var docs = collection.Find(filter.Empty).ToList();
2.AND查询
查询年龄大于25且小于28的记录
//连接数据库
var client = new MongoClient("mongodb://root:root@192.168.100.3:27017/");//获取database
var mydb = client.GetDatabase("myDb");//获取collection
var collection = mydb.GetCollection("userinfos");//查询25
var filter = Builders.Filter;var docs = collection.Find(filter.Gt("age", 25) & filter.Lt("age", 28)).ToList();
docs.ForEach(d&#