.net集成MongoDB需要两个前提;跟连接mysql一样:
- 你需要一个MongoDB Server
- 还有.net平台连接mongodb server的驱动(MongoDB.Driver)
安装的MongoDb.Driver的版本选择与.net framework版本的对应图
MongoDb.Driver与MongoDb Server的版本对应图
我用的是MongoDb 4 和 Driver 2.7 visual studio 2015
nuget导包;
准备工作完成开始测试;
using MongoDB.Driver;
namespace safetodelete_mongodb_example
{
class Program
{
static void Main(string[] args)
{
//测试插入代码
MongoClient mongoClient = new MongoClient("mongodb://127.0.0.1");
var mongodb = mongoClient.GetDatabase("docTest");
//插入新的集合
//mongodb.CreateCollection("cola");
var cola = mongodb.GetCollection<Student>("cola");
var s1 = new Student();
s1.name = "李四";
s1.age = 22;
s1.scores.Add(70.0);
s1.scores.Add(42.2);
s1.scores.Add(95.5);
cola.InsertOne(s1);
Console.WriteLine("end");
Console.ReadKey();
}
}
//实体类
class Student
{
public ObjectId _id { get; set; }
public String name { get; set; }
public int age { get; set; }
public List< Double> scores { get; set; }
public Student()
{
this.scores = new List<double>();
}
}
}
编译、运行。
查看结果:
下面进行增删改查测试
static void Main(string[] args)
{
//测试插入代码
MongoClient mongoClient = new MongoClient("mongodb://127.0.0.1");
var mongodb = mongoClient.GetDatabase("docTest");
//显示docTest数据库中的所有集合
var allCollections = mongodb.ListCollectionNames();
foreach(var i in allCollections.ToList())
{
Console.WriteLine("Collection : "+i);
}
//插入新的集合
//mongodb.CreateCollection("cola");
//从cola集合中查出叫"李四"的文档
var cola = mongodb.GetCollection<Student>("cola");
var result= cola.Find<Student>(s => s.name == "李四");
Student studentLiSi = cola.AsQueryable().Where(s => s.name == "李四").First();
var studentLiSi2= result.ToList()[0];
Console.WriteLine(studentLiSi.name+studentLiSi.age+studentLiSi.scores.ToArray());
Console.WriteLine(studentLiSi2.name + studentLiSi2.age + studentLiSi2.scores.ToArray());
//删除“李四”文档
cola.DeleteOne(s => s.name == studentLiSi.name && s.age == studentLiSi.age);
//修改cola集合中的第一个文档
var studentUpdating= cola.Find(s=>s.name!="").First();
var filterUpdate = Builders<Student>.Filter.Eq("name", studentUpdating.name);
var updatedefine = Builders<Student>.Update.Set("name", "莎士比亚")
.Set("age", 455);
cola.UpdateOne(filterUpdate, updatedefine);
//插入一个新文档
var s1 = new Student();
s1.name = "王二";
s1.age = 22;
s1.scores.Add(70.0);
s1.scores.Add(42.2);
s1.scores.Add(95.5);
cola.InsertOne(s1);
Console.WriteLine("end");
Console.ReadKey();
}
OK结果正确。