引用mongodb库:
Nuget上获取包并安装![](https://img-blog.csdnimg.cn/20190806111750992.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21hb19tYW8zNw==,size_16,color_FFFFFF,t_70)
添加引用
using MongoDB.Driver;
using MongoDB.Bson;
连接mongodb数据库,并操作mongodb数据库中的document:
public class OpMongodb{
//连接mongodb的字符串,格式"mongodb://"+mongodb的server地址
public string _mongodbConntectStr {get;set;}= "mongodb://192.***.***.***:27017";
//要操作的mongoDB数据库名
public string mongoDB {get;set;}= "mongodbName";
//要操作的数据库下的collection名
public string collection {get;set;}= "collectionName";
private MongoClient client ;
private Filter = Builders(BsonDocument).Filter;
public void ConnectDB(){
client = new MongoClient(_MongoDBConnectString);
}
//遍历mongodb中的collection
public void OpDb(){
var mDB = client.GetDatabase(mongoDB);
var datacollection = mDB.GetCollection<BsonDocument>(collection);
var Cursor = datacollection.Find(Filter.Empty).ToCursor();//无查询条件,全遍历
var Cursor = datacollection.Find(Filter.eq("","")).ToCursor;
while(Cursor.MoveNext())
{
foreach(var document in Cursor.Current)
{
//获取field,如果没有field,则指定默认值
var bsonValue = document.GetValue("key","");//返回BsonValue值或者空字符串,BsonValue可能为BsonNull,需要特殊处理
if(bsonValue.IsBsonNull){
}else{
}
//还有一种方法:直接判断是否存在field
BsonElement ele;
if(document.TryGetElement("fieldName",out ele)){
}else{
}
//document.Contains(string name);
//document.Contains(BsonValue value);
//同样可以获取到Document的所有相关信息
//document.Elements;
//document.Names;
//document.Values;
//document.BsonType
//document.ElementCount
//对于Document中出现的类似Document的字段操作:
var bValue = Document.GetValue(matchDic[col],"");
string pvalue = "";
if(bValue != ""){
var pList = bValue.AsBsonArray;
foreach (var item in pList)
{
pvalue += item["名称"].ToString() + ";";
}
}
}
}
}
}
向mongodb中写入数据
public class OpMongodb{
//连接mongodb的字符串,格式"mongodb://"+mongodb的server地址
public string _mongodbConntectStr {get;set;}= "mongodb://192.***.***.***:27017";
//要操作的mongoDB数据库名
public string mongoDB {get;set;}= "mongodbName";
//要操作的数据库下的collection名
public string collection {get;set;}= "collectionName";
private MongoClient client ;
private Filter = Builders(BsonDocument).Filter;
public void ConnectDB(){
client = new MongoClient(_MongoDBConnectString);
}
//遍历mongodb中的collection
public void WriteToDb(){
var mDB = client.GetDatabase(mongoDB);
var datacollection = mDB.GetCollection<BsonDocument>(collection);
var vModels = new List<WriteModel<BsonDocument>>();
var Data1 = new DataItem();
Data1.id = "****";
Data1.Name = "name1";
Data1.Age = 29;
vModels.Add(new InsertOneModel<BsonDocument>(Data1.ToBsonDocument()));
var Data2 = new DataItem();
Data2.id = "****";
Data2.Name = "name2";
Data2.Age = 19;
vModels.Add(new InsertOneModel<BsonDocument>(Data2.ToBsonDocument()));
try{
datacollection.BulkWrite(vModels,new BulkWriteOptions{IsOrdered = false});
}catch(MongoBulkWriteException ex)
{
failNumb = ex.WriteErrors.Count;
}
vModels.Clear();
}
}
更新数据:
public class OpMongodb{
//连接mongodb的字符串,格式"mongodb://"+mongodb的server地址
public string _mongodbConntectStr {get;set;}= "mongodb://192.***.***.***:27017";
//要操作的mongoDB数据库名
public string mongoDB {get;set;}= "mongodbName";
//要操作的数据库下的collection名
public string collection {get;set;}= "collectionName";
private MongoClient client ;
private Filter = Builders(BsonDocument).Filter;
public void ConnectDB(){
client = new MongoClient(_MongoDBConnectString);
}
//遍历mongodb中的collection
public void UpdateDb(){
var update = Buliders<BsonDocument>.Update;
var database = client.GetDatabase(mongoDB);
var datacollection = database.GetCollection<BsonDocument>(collection);
var Cursor = datacollection.Find(Filter.Empty).ToCursor();
while(Cursor.MoveNext()){
foreach(var document in Cursor.Current){
UpdateDefinition<BsonDocument> updater = null;
var id = Document["_id"].AsObjectId;
updater = update.Set("key1","value1").Set("Key2","value2");
datacollection.UpdateOne(Filter.eq("_id",id),updater);
}
}
}
}
以上代码全手打,可能会有错误,使用时请注意调试