《NoSQL》MongoDB
Posted 风雪幻林
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《NoSQL》MongoDB相关的知识,希望对你有一定的参考价值。
1. MongoDb简介:
MongoDB是一个文档数据库,不需要预先定义表结构。可以保存多个格式的数据
1.1 安装:
在官网上下载:https://www.mongodb.com/
mongodb 默认使用 C:\data\db\作为数据文件夹(需要自己手动创建)
1.2 把 MongoDB 安装成 windows 服务的方法:
创建一个配置文件 mongod.cfg,在 bin安装目录下,内容是:
systemLog:
destination: file
path: c:\data\log\mongod.log
storage:
dbPath: c:\data\db
注册成系统服务:
mongod --config "bin安装目录\mongod.cfg"–install
启动服务:net start MongoDB
1.3 官网安装文档:
windows安装方法:
https://docs.mongodb.com/master/tutorial/install-mongodb-on-windows/
Ubuntu 安装方法:
https://docs.mongodb.com/master/tutorial/install-mongodb-on-ubuntu/
1.4 连接MongoDb:
NuGet开发包:
Install-Package MongoDB.Driver
2. MongoDb数据的写入:
2.1 写入普通数据:
MongoClient client = newMongoClient("mongodb://localhost");
IMongoDatabase database = client.GetDatabase("TestDb1");
IMongoCollection<Person> collection = database.GetCollection<Person>("Persons");
Person p = newPerson() {
Age=21,
Name="fxhl",
Id=1
};
collection.InsertOne(p);
MongoDB 中没有内置“自增字段”,可以把 Id 声明为 ObjectId 类型(using MongoDB.Bson)
2.2 写入Json数据:
IMongoCollection<BsonDocument> collection = database.GetCollection<BsonDocument>("dogs");
string json = "{id:8889,Age:81,Name:'japan',gender:true}";
BsonDocument p1 = BsonDocument.Parse(json);
collection.InsertOne(p1);
3. MongoDb数据的查询:
3.1 少量数据查询:
IMongoCollection<Person> collection = database.GetCollection<Person>("persons");
var filter= Builders<Person>.Filter.Gt(v=>v.Age,21);//可以通过where拉姆达表达式
var results= collection.Find<Person>(filter).ToList();
遍历items就可以获取指定数据了
Json读取数据IMongoCollection<BsonDocument> collection = database.GetCollection<BsonDocument>
p.GetValue("Name").AsString
3.2 大量数据查询:
IMongoCollection<Person> collection = database.GetCollection<Person>("persons");
var result = Builders<Person>.Filter.Gt(v => v.Age, 21);
using (var personsCursor = collection.FindAsync<Person>(result).Result)
{
while(personsCursor.MoveNext())//获取下一组数据
{
var persons = personsCursor.Current; //当前组数据
}
}
FindOptions 参数的 BatchSize 设置每一批的大
3.3 分页(排序)获取数据:
FindOptions<Person, Person> findOpt = newFindOptions<Person, Person>();
findOpt.Limit= 5;//取最多几条
findOpt.Skip= 2;//跳过几条
using (var personsCursor = awaitcollection.FindAsync(filter1, findOpt))
排序规则:
findOpt.Sort= Builders<Person>.Sort.Ascending(p =>p.Age).Descending(p => p.Name);
4. MongoDb数据的更新删除:
4.1 更新数据(很少使用):
var filter = Builders<Person>.Filter.Where(p => p.Age <= 5);
var update = Builders<Person>.Update
.Set(p=> p.Age, 8);
collection.UpdateMany(filter, update);
4.2 数据删除:
var filter = Builders<Person>.Filter.Where(p => p.Age <= 5);
collection.DeleteMany(filter);
以上是关于《NoSQL》MongoDB的主要内容,如果未能解决你的问题,请参考以下文章
mongodb介绍mongodb安装连接mongodbmongodb用户管理
NoSQL & NewSQL家族:后起之秀及RethinkDB的告别