志在指尖
用双手敲打未来

C#使用Mongodb方法

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
usingMongoDB.Driver;
usingMongoDB.Bson;
usingMongoDB.Bson.Serialization.Attributes;
usingSystem.Linq.Expressions;
namespaceLangu.DbHelper
{
///<summary>
///MongoDb数据库操作类
///</summary>
publicclassMongoHelper<T>whereT:BaseEntity
{
///<summary>
///数据库对象
///</summary>
privateIMongoDatabasedatabase;
///<summary>
///构造函数
///</summary>
///<paramname=”conString”>连接字符串</param>
publicMongoHelper(StringconString)
{
varurl=newMongoUrl(conString);
MongoClientSettingsmcs=MongoClientSettings.FromUrl(url);
mcs.MaxConnectionLifeTime=TimeSpan.FromMilliseconds(1000);
varclient=newMongoClient(mcs);
this.database=client.GetDatabase(url.DatabaseName);
}
///<summary>
///创建集合对象
///</summary>
///<paramname=”collName”>集合名称</param>
///<returns>集合对象</returns>
privateIMongoCollection<T>GetColletion(StringcollName)
{
returndatabase.GetCollection<T>(collName);
}
#region增加
///<summary>
///插入对象
///</summary>
///<paramname=”collName”>集合名称</param>
///<paramname=”t”>插入的对象</param>
publicvoidInsert(StringcollName,Tt)
{
varcoll=GetColletion(collName);
coll.InsertOne(t);
}
///<summary>
///批量插入
///</summary>
///<paramname=”collName”>集合名称</param>
///<paramname=”ts”>要插入的对象集合</param>
publicvoidInsertBath(StringcollName,IEnumerable<T>ts)
{
varcoll=GetColletion(collName);
coll.InsertMany(ts);
}
#endregion
#region删除
///<summary>
///按BsonDocument条件删除
///</summary>
///<paramname=”collName”>集合名称</param>
///<paramname=”document”>文档</param>
///<returns></returns>
publicInt64Delete(StringcollName,BsonDocumentdocument)
{
varcoll=GetColletion(collName);
varresult=coll.DeleteOne(document);
returnresult.DeletedCount;
}
///<summary>
///按json字符串删除
///</summary>
///<paramname=”collName”>集合名称</param>
///<paramname=”json”>json字符串</param>
///<returns></returns>
publicInt64Delete(StringcollName,Stringjson)
{
varcoll=GetColletion(collName);
varresult=coll.DeleteOne(json);
returnresult.DeletedCount;
}
///<summary>
///按条件表达式删除
///</summary>
///<paramname=”collName”>集合名称</param>
///<paramname=”predicate”>条件表达式</param>
///<returns></returns>
publicInt64Delete(StringcollName,Expression<Func<T,Boolean>>predicate)
{
varcoll=GetColletion(collName);
varresult=coll.DeleteOne(predicate);
returnresult.DeletedCount;
}
///<summary>
///按检索条件删除
///建议用Builders<T>构建复杂的查询条件
///</summary>
///<paramname=”collName”>集合名称</param>
///<paramname=”filter”>条件</param>
///<returns></returns>
publicInt64Delete(StringcollName,FilterDefinition<T>filter)
{
varcoll=GetColletion(collName);
varresult=coll.DeleteOne(filter);
returnresult.DeletedCount;
}
#endregion
#region修改
///<summary>
///修改文档
///</summary>
///<paramname=”collName”>集合名称</param>
///<paramname=”filter”>修改条件</param>
///<paramname=”update”>修改结果</param>
///<paramname=”upsert”>是否插入新文档(filter条件满足就更新,否则插入新文档)</param>
///<returns></returns>
publicInt64Update(StringcollName,Expression<Func<T,Boolean>>filter,UpdateDefinition<T>update,Booleanupsert=false)
{
varcoll=GetColletion(collName);
varresult=coll.UpdateMany(filter,update,newUpdateOptions{IsUpsert=upsert});
returnresult.ModifiedCount;
}
///<summary>
///用新对象替换新文档
///</summary>
///<paramname=”collName”>集合名称</param>
///<paramname=”filter”>修改条件</param>
///<paramname=”t”>新对象</param>
///<paramname=”upsert”>是否插入新文档(filter条件满足就更新,否则插入新文档)</param>
///<returns>修改影响文档数</returns>
publicInt64Update(StringcollName,Expression<Func<T,Boolean>>filter,Tt,Booleanupsert=false)
{
varcoll=GetColletion(collName);
BsonDocumentdocument=t.ToBsonDocument<T>();
document.Remove(“_id”);
UpdateDocumentupdate=newUpdateDocument(“$set”,document);
varresult=coll.UpdateMany(filter,update,newUpdateOptions{IsUpsert=upsert});
returnresult.ModifiedCount;
}
#endregion
///<summary>
///查询,复杂查询直接用Linq处理
///</summary>
///<paramname=”collName”>集合名称</param>
///<returns>要查询的对象</returns>
publicIQueryable<T>GetQueryable(StringcollName)
{
varcoll=GetColletion(collName);
returncoll.AsQueryable<T>();
}
#region查询
#endregion
}
///<summary>
///实体基类,方便生成_id
///</summary>
publicclassBaseEntity
{
[BsonRepresentation(BsonType.ObjectId)]
publicStringId{get;set;}
///<summary>
///给对象初值
///</summary>
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对象(泛型版本),构造函数要求传入连接字符串
MongoHelper<User>mongoHelper=newMongoHelper<User>(conString);
//查询集合user中有多少数据量
varcnt=mongoHelper.GetQueryable(“user”).Count();
Console.WriteLine(cnt);
Console.ReadKey();
}
}
internalclassUser:BaseEntity
{
publicintAge{get;set;}
publicStringName{get;set;}
}
}

未经允许不得转载:IT技术网站 » C#使用Mongodb方法
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载