《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的告别

MongoDB数据库基础

第五十一课 NoSQL基础概念及MongoDB应用数据库分配概念

介绍NoSQL最受欢迎的产品

第五十一课 NoSQL基础概念及MongoDB应用数据库分配概念