6月 26, 2018 - C#, 开发笔记    1 评论

Mongodb-C#

MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

特点 描述
存储方式 虚拟内存+持久化
数据结构 key=>value
查询语句 mongodb自有的查询方式
使用场景 事件消息记录,内容管理或者博客平台
数据处理

数据是存储在硬盘上的,只不过需要

经常读取的数据会被加载到内存中,

将数据存储在物理内存中,

从而达到高速读写

架构特点 通过副本集,以及分片来实现高可

 

MongoDB VS  SQL:

SQL术语 MongoDB术语 解释
database database 数据库
table collection 表/集合
row document 行/文档
column field 列/字段
index index 索引
primary key primary key 主键

var client = new MongoClient("mongodb://localhost:27017");            


var database = client.GetDatabase("foo");  // 没有此数据库,则会自动创建            

var collection = database.GetCollection<BsonDocument>("bar"); // 没有此表,则会自动创建            

var document = new BsonDocument             {                

{"name", "MongoDB" },                

{"type", "Database" },                

{"count", 3 },                

{"info", new BsonDocument                    

{                        

{"x", 203 },                        

{"y", 102 }                    

}                

}            

};            

// 增加一条数据            

collection.InsertOne(document);

// 增加多条数据

var res = collection.insertMany([{“b”: 3}, {‘c’: 4}]) var docs = Enumerable.Range(0, 100).Select(x => new BsonDocument("count", x)); collection.InsertMany(docs);

// 查询条件

Query.All("name", "a", "b");//通过多个元素来匹配数组    

Query.And(Query.EQ("name", "a"), Query.EQ("title", "t"));//同时满足多个条件    

Query.EQ("name", "a");//等于    Query.Exists("type", true);//判断键值是否存在    

Query.GT("value", 2);//大于>    Query.GTE("value", 3);//大于等于>=    

Query.In("name", "a", "b");//包括指定的所有值,可以指定不同类型的条件和值

Query.LT("value", 9);//小于<  

Query.LTE("value", 8);//小于等于<=  

Query.Mod("value", 3, 1);//将查询值除以第一个给定值,若余数等于第二个给定值则返回该结果  

Query.NE("name", "c");//不等于  Query.Nor(Array);//不包括数组中的值  

Query.Not("name");//元素条件语句  

Query.NotIn("name", "a", 2);//返回与数组中所有条件都不匹配的文档  

Query.Or(Query.EQ("name", "a"), Query.EQ("title", "t"));//满足其中一个条件  

Query.Size("name", 2);//给定键的长度  Query.Type("_id", BsonType.ObjectId );//给定键的类型

对数据排序:Sort,Desceding,Ascending

// 对count字段排序 var filterSort =Builders<BsonDocument>.Filter.Exists("count");

// 降序排列 var sort =Builders<BsonDocument>.Sort.Descending("count");

// 升序排列 var sort = Builders<BsonDocument>.Sort.Ascending("count");

var sortTes = collection.Find(filterSort).Sort(sort).ToList();

// 取出部分字段: 排除主键ID var projection = Builders<BsonDocument>.Projection.Exclude("_id");

// 取出name与type字段,排除主键_id var projection = Builders<BsonDocument>.Projection.Exclude("_id").Include("name").Include("type"); var doc = collection.Find(new BsonDocument()).Project(projection).ToList();

// 更新: 更新一条数据:将count=8的数据改成count=3 var filterData = Builders<BsonDocument>.Filter.Eq("count", 8); var updated = Builders<BsonDocument>.Update.Set("count", 3);

//var reslult = collection.UpdateOne(filterData, updated);

// 更新: 更新多条数据:将count<3.1的数据增加5 var filters = Builders<BsonDocument>.Filter.Gt("count", 3.1);  var updatedData = Builders<BsonDocument>.Update.Inc("count", 5);  var resultData = collection.UpdateMany(filters, updatedData);

// 删除: 删除一条数据 var filterDel = Builders<BsonDocument>.Filter.Eq("count", 4); var resultDel = collection.DeleteOne(filterDel);

// 删除: 删除多条数据 var filterDels = Builders<BsonDocument>.Filter.Eq("count", 3.1);  var resultDels = collection.DeleteMany(filterDel);

评论被关闭。