C#使用Mongodb方法

IT技术2年前 (2022)发布 投稿用户
0

usingSystem;

usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
usingMongoDB.Driver;
usingMongoDB.Bson;
usingMongoDB.Bson.Serialization.Attributes;
usingSystem.Linq.Expressions;
namespaceLangu.DbHelper

C#


{
///
///MongoDb数据库操作类
///
publicclassMongoHelperwhereT:BaseEntity
{
///
///数据库目标
///
privateIMongoDatabasedatabase;
///
///构造函数
///
///衔接字符串
publicMongoHelper(StringconString)
{
varurl=newMongoUrl(conString);
MongoClientSettingsmcs=MongoClientSettings.FromUrl(url);
mcs.MaxConnectionLifeTime=TimeSpan.FromMilliseconds(1000);
varclient=newMongoClient(mcs);
this.database=client.GetDatabase(url.DatabaseName);
}
///
///创建调集目标
///
///调集称号
///调集目标
privateIMongoCollectionGetColletion(StringcollName)
{
returndatabase.GetCollection(collName);
}
#region添加
///
///刺进目标
///
///调集称号
///刺进的目标
publicvoidInsert(StringcollName,Tt)
{
varcoll=GetColletion(collName);
coll.InsertOne(t);
}
///
///批量刺进
///
///调集称号
///要刺进的目标调集
publicvoidInsertBath(StringcollName,IEnumerablets)
{
varcoll=GetColletion(collName);
coll.InsertMany(ts);
}
#endregion
#region删去
///
///按BsonDocument条件删去
///
///调集称号
///文档
///
publicInt64Delete(StringcollName,BsonDocumentdocument)
{
varcoll=GetColletion(collName);
varresult=coll.DeleteOne(document);
returnresult.DeletedCount;
}
///
///按json字符串删去
///
///调集称号
///json字符串
///
publicInt64Delete(StringcollName,Stringjson)
{
varcoll=GetColletion(collName);
varresult=coll.DeleteOne(json);
returnresult.DeletedCount;
}
///
///按条件表达式删去
///
///调集称号
///条件表达式
///
publicInt64Delete(StringcollName,Expression>predicate)
{
varcoll=GetColletion(collName);
varresult=coll.DeleteOne(predicate);
returnresult.DeletedCount;
}
///
///按检索条件删去
///建议用Builders构建复杂的查询条件
///
///调集称号
///条件
///
publicInt64Delete(StringcollName,FilterDefinitionfilter)
{
varcoll=GetColletion(collName);
varresult=coll.DeleteOne(filter);
returnresult.DeletedCount;
}
#endregion
#region修正
///
///修正文档
///
///调集称号
///修正条件
///修正成果
///是否刺进新文档(filter条件满意就更新,不然刺进新文档)
///
publicInt64Update(StringcollName,Expression>filter,UpdateDefinitionupdate,Booleanupsert=false)
{
varcoll=GetColletion(collName);
varresult=coll.UpdateMany(filter,update,newUpdateOptions{IsUpsert=upsert});
returnresult.ModifiedCount;
}
///
///用新目标替换新文档
///
///调集称号
///修正条件
///新目标
///是否刺进新文档(filter条件满意就更新,不然刺进新文档)
///修正影响文档数
publicInt64Update(StringcollName,Expression>filter,Tt,Booleanupsert=false)
{
varcoll=GetColletion(collName);
BsonDocumentdocument=t.ToBsonDocument();
document.Remove(“_id”);
UpdateDocumentupdate=newUpdateDocument(“$set”,document);
varresult=coll.UpdateMany(filter,update,newUpdateOptions{IsUpsert=upsert});
returnresult.ModifiedCount;
}
#endregion
///
///查询,复杂查询直接用Linq处理
///
///调集称号
///要查询的目标
publicIQueryableGetQueryable(StringcollName)
{
varcoll=GetColletion(collName);
returncoll.AsQueryable();
}
#region查询
#endregion
}
///
///实体基类,方便生成_id
///
publicclassBaseEntity
{
[BsonRepresentation(BsonType.ObjectId)]
publicStringId{get;set;}
///
///给目标初值
///
publicBaseEntity()
{
this.Id=ObjectId.GenerateNewId().ToString();
}
}
}
调用方法:
[C#]纯文本检查
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
usingLangu.DbHelper;
usingSystem.Threading;
usingSystem.Linq.Expressions;
usingMongoDB.Driver;
namespaceClient
{
classProgram
{
staticvoidMain(string[]args)
{
//衔接字符串127.0.0.1服务器IP27100mongodb服务端口号mydb数据库称号
StringconString=”mongodb://127.0.0.1:27100/mydb”;
//实例化MongoHelper目标(泛型版别),构造函数要求传入衔接字符串
MongoHelpermongoHelper=newMongoHelper(conString);
//查询调集user中有多少数据量
varcnt=mongoHelper.GetQueryable(“user”).Count();
Console.WriteLine(cnt);
Console.ReadKey();
}
}
internalclassUser:BaseEntity
{
publicintAge{get;set;}
publicStringName{get;set;}
}
}

© 版权声明
好牛新坐标 广告
版权声明:
1、IT大王遵守相关法律法规,由于本站资源全部来源于网络程序/投稿,故资源量太大无法一一准确核实资源侵权的真实性;
2、出于传递信息之目的,故IT大王可能会误刊发损害或影响您的合法权益,请您积极与我们联系处理(所有内容不代表本站观点与立场);
3、因时间、精力有限,我们无法一一核实每一条消息的真实性,但我们会在发布之前尽最大努力来核实这些信息;
4、无论出于何种目的要求本站删除内容,您均需要提供根据国家版权局发布的示范格式
《要求删除或断开链接侵权网络内容的通知》:https://itdw.cn/ziliao/sfgs.pdf,
国家知识产权局《要求删除或断开链接侵权网络内容的通知》填写说明: http://www.ncac.gov.cn/chinacopyright/contents/12227/342400.shtml
未按照国家知识产权局格式通知一律不予处理;请按照此通知格式填写发至本站的邮箱 wl6@163.com

相关文章