MongoDB使用总结(C#版 潘鹏)
来源:互联网 发布:mac os x dmg vmware 编辑:程序博客网 时间:2024/05/07 18:18
简介
MongoDB是非关系型、文档型的数据库,方便之处在于可以直接存取class类型……官网定期会开设Free的课程,上一个项目中使用到MongoDB,现在我做的项目用的是EF,所以想将MongoDB用过的方法、注意的事项和一些想法总结一下,毕竟,如果再次使用的话林林总总去拼凑还是要浪费时间的。
DLL
(1) MongoDB.Bson.dll
(2) MongoDB.Driver.dll
软件
很好的可视化软件,MongoVUE
方法
连接
//Mongo数据库名称private MongoDatabase Mg_db;//Mongo数据库集合名称public MongoCollection Mg_col;//MongoServerprivate MongoServer mongoServer;//连接字符串(以mongodb://开头)string connectionString = "mongodb://localhost";//或者是192.xxx.xxx.xxx//string constr = "mongodb://" + ip + ":" + port; //连接ip和该port//连接Mongo数据库var client = new MongoClient(connectionString);//得到一个客户端引用mongoServer = client.GetServer();
创建数据库
Mg_db = mongoServer.GetDatabase(dbName);//dbName是新库的名字//如果已有dbName这个库,那Mg_db是get这个库,否则就是创建
创建表(集合)
Mg_col = Mg_db.GetCollection<T>(connectionName);//connectionName是新表的名字//如果该库已有connectionName这个表,那Mg_col 是get这个表,否则就是创建
在表中插入数据
public void Insert<T>(string dbName, string connectionName, T t) { Mg_db = mongoServer.GetDatabase(dbName); //get 某个库 MongoCollection collection = Mg_db.GetCollection<T>(connectionName); //get该库某个表 collection.Insert(t); //插入(任意类型) }
在表中删除数据
public void delete<T>(string dbName, string connectionName, string key, BsonValue value){ Mg_db = mongoServer.GetDatabase(dbName); Mg_col = Mg_db.GetCollection<T>(connectionName); var query = Query.EQ(key, value); //查询条件,eg:我要删除name是张三的该条数据,key,字段名,value是张三 Mg_col.Remove(query);}
更新表中的某一条数据
public void UpData(string dbName, string connectionName, string key, BsonValue value, People t){ Mg_db = mongoServer.GetDatabase(dbName); Mg_col = Mg_db.GetCollection(connectionName); var query = Query.EQ(key, value); People temp = Mg_col.FindOneAs<People>(query); //根据查询条件获取表中People类型的数据temp,这也是我们要更新的数据 t.id = (temp as People).id; //t是People类型的一条新数据,它拿到要更新数据的id Mg_col.Update(query, Update.Replace(t));}
查找某个表符合条件的对象并返回
public T Find<T>(string dbName, string connectionName, string key, BsonValue value) { Mg_db = mongoServer.GetDatabase(dbName); MongoCollection collection = Mg_db.GetCollection<T>(connectionName); var query = Query.EQ(key, value); T result = collection.FindOneAs<T>(query); return result; }
查找某个表符合条件的对象个数
public long FindSameNameCollectionNum(string dbName, string collcetionName, string key, BsonValue value){ Mg_db = mongoServer.GetDatabase(dbName); Mg_col = Mg_db.GetCollection(collcetionName); var query = Query.EQ(key, value); long count = Mg_col.Count(query); return count;}
获取某个表中的所有对象
public List<T> GetProjectArray<T>(string dbName, string connectionName) { Mg_db = mongoServer.GetDatabase(dbName); Mg_col = Mg_db.GetCollection(connectionName); //获取该集合所有对象 var result = Mg_col.FindAllAs<T>(); List<T> pList = new List<T>(); pList.AddRange(result); return pList; }
存储影音文本数据放在GridFS
MongoDB中每个库对应一个GridFS文件夹用来存放影音文本……
可以在这里用程序添加
可以直接在MongoVUE中添加
public void AddFileInGridFS(string dbName, string filePath){ Mg_db = mongoServer.GetDatabase(dbName); MongoGridFS gridfs = Mg_db.GridFS; gridfs.Upload(filePath);}
取出放在GridFS中的数据
public void LoadFileInGridFS(string dbName, string fileName){ Mg_db = mongoServer.GetDatabase(dbName); MongoGridFS gridfs = Mg_db.GridFS; gridfs.Download(fileName);}
取出放在GridFS中的数据保存在Byte[]中
public byte[] ReadFileFromfs(string dbName, string fileName, byte[] bytes){ Mg_db = mongoServer.GetDatabase(dbName); MongoGridFS gridfs = Mg_db.GridFS; MongoGridFSStream gridFileStream = gridfs.OpenRead(fileName); bytes = new byte[gridFileStream.Length]; gridFileStream.Read(bytes, 0, bytes.Length); return bytes;}
注意事项
1.库名不可以是中文,会报错。
2.private的数据无法存入MongoDB中。
3.要存入的class,结构中添加using MongoDB.Bson;并添加 public ObjectId id { get; set; },这个id存入后自增长。
体会
1.MongoDB的结构库—-集合—-对象,这里的集合就是表,但是我说的是”集合“,以至于上面的方法中我定义的都是collection,同样的,我强调的还有对象这个概念
2.一个表可以存多种类型的数据,但是最好不要这样,读取的时候很麻烦,拆箱装箱极易错,还是一个表一种类型为好。
1 0
- MongoDB使用总结(C#版 潘鹏)
- SQLite使用总结(C#版 潘鹏)
- Mongodb知识及使用总结(一)
- mongodb使用总结1
- mongodb使用总结
- mongodb mapreduce使用总结
- mongodb 使用总结
- Mongodb使用总结
- MongoDB使用总结
- mongodb使用简单总结
- mongodb使用总结
- Mongodb总结4-Spring环境使用Mongodb
- 使用MongoDB类操作MongoDB数据库总结
- C#使用MongoDB的注意事项
- MongoDb在C#中使用
- MongoDB错误和使用总结
- 基于C#的MongoDB数据库开发应用(1)--MongoDB数据库的基础知识和使用
- MongoDB学习笔记(三)--MongoDB的C#驱动的基本使用
- 软件包管理 rpm yum apt-get dpkg
- hdu 4630 No Pain No Game (区间gcd相关x线段树or树状数组)
- 分享营销型网站SEO优化心得和技巧
- union和union all的区别
- LightOJ 1072 - Calm Down 【二分】
- MongoDB使用总结(C#版 潘鹏)
- 可以替代Ghost的系统备份/恢复利器Clonezilla
- Pow(x, n)
- oracle登陆命令
- ubuntu git 服务器搭建
- 升级WIN10后80端口被占用
- oracle登陆账户信息
- Oracle 权限 管理大全
- IIS7.5安全配置研究