记录一下C#连接MongoDB数据的流程。
首先是要下载一下MongoDB提供的官方NuGet包MongoDB.Driver
这个添加的时候会一起添加好多联动的,如果有特殊需求可以看需求选择是否添加其他的。
<add name="mongodbConn" connectionString="mongodb://ip/test" />
然后是在配置文件里面填写连接。
// 定义要查询的集合名称
const string collectionName = "test1";//algTemplateConfig
// 创建并实例化客户端
// 读取连接字符串
string strCon = ConfigurationManager.ConnectionStrings["mongodbConn"].ConnectionString;
var mongoUrl = new MongoUrlBuilder(strCon);
// 获取数据库名称
string databaseName = mongoUrl.DatabaseName;
var client = new MongoClient(mongoUrl.ToMongoUrl());
// 根据数据库名称实例化数据库
var database = client.GetDatabase(databaseName);
//确定访问哪张表Pet是实体类可变的
var collection = database.GetCollection<Pet>(collectionName);
//执行查询方法
var res = collection.Find(new BsonDocument()).ToList();
//将MongoDB的数据转换成IEnumerable类型 Pet是实体类可变的
IEnumerable<Pet> pplist = res.ToList();
//转换为常用的list类型
List<PetQ> qplist = new List<PetQ>();
补充一点是关于MongoDB特性的ObjectID的,一开始查的时候_id这个字段出来的值都是ObjectId(“60f23f09718ab17bdf1e2b12”)这种样子的,但是这并不是我想要的,所以要改变这个格式成为"_id":"60f23f09718ab17bdf1e2b11"
这种格式的。
这个时候要在Model里面标出_id对应的字段了。
class Pet
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string _id { get; set; }
public string name { get; set; }
public string createdate { get; set; }
public A[] content { get; set; }
public ConModel contentModel { get; set; }
public List<B> contentlist { get; set; }
}
根据表字段值来选择Model中的字段为什么类型。