您的位置:首页 > 数据库 > Mongodb

MongoDb

2016-05-11 23:05 453 查看
http://pan.baidu.com/share/link?shareid=2634729037&uk=3422579373#path=%252F
http://www.cnblogs.com/fish-li/archive/2011/06/26/2090800.html#_labelStart http://www.cnblogs.com/chenqingwei/p/4084418.html http://www.cnblogs.com/fish-li/archive/2011/06/26/2090800.html
MongoDb 入门
1.下载MongoDB并解压:https://www.mongodb.com/download-center

 

2.启动MongoDb服务方式:(mongod.exe就是Mongodb服务)

方式一:执行命令行(mongod.exe)方式安装Mongodb服务:

打开cmd命令窗口定位到MongoDb的bin目录下,输入命令mongod.exe  --dbpath:"D:\mongodbData\data"。

配置环境变量:我的电脑-属性-高级系统设置-环境变量-系统变量-找到path-编辑,在最后一个“\”后加一个“;”,然后把MongoDb的bin目录的路径粘贴-确定。

方式二:以windows服务方式安装MongoDb服务

以管理员身份打开cmd命令窗口定位到MongoDb的bin目录下,输入命令:mongod --install  --dbpath:D:\mongodbData\data  --logpath  D:\mongodbData\data\log\mongodb.log  --port 27017  --logappend  --bind_Ip 127.0.0.1.(必须先建立好文件夹)

启动mongodb服务:net start mongodb

卸载mongodb服务:cmd 转到c盘根目录,sc delete mongodb

参数列表:--install:表示以windows服务安装Mongodb,--ddpath: 表示数据库所在文件夹路径,D:\mongodbData\data路径实在D盘中建立的文件夹路径(也可将该文件建在Mongodb的bin文件夹中).
--logpath:表示日志文件路径,-port:端口号,默认是27017,--bind_id:绑定的服务ip. (默认为本机ip), .至于mongod的更多命令行参数,请输入命令: mongod /?来获得。

也可将这些参数写在一个mongodb.conf 文件中,然后输入命令 mongod --install --config “C:\Users\v-lozhu\Downloads\mongodb-win32-x86_64-enterprise-windows-64-3.4.6\bin\mongodb.conf”来安装mongodb服务,如下:



安装Mongodb服务后,在windows service中可以看到Mongodb服务已经启动:

在数据库文件data中生成了一些mongodb相关的文件:



4.通过cmd命令窗口使用mongo命令连接mongodb服务器进行操作mongodb数据库:

打开cmd命令窗口定位到MongoDb的bin目录下,输入命令:mongo 127.0.0.1:27017

之后就可以使用命令来对mongodb数据库进行操作了

5.顺便提一下:运行mongod后,它会显示一些有用的信息。比如:pid (进程ID), tcp port (监听端口),
http 端口(用于查看运行状态), 操作系统版本,数据目录,32
or 64位版本,如果是32位版本,它还会告诉你【数据有2G的限制】,所以正式使用建议运行64位版本。

6.下载MongoDb 的C#驱动(Mongodb.dll),以让我们在C#中使用Mongodb。我们在C#访问MongoDB所需的驱动就是项目MongoDB了。编译这个项目就能得到了,文件名:MongoDB.dll。

7.在C#使用MongoDB:

在项目中引用Mongodb.dll,

创建一个实体类:Customer.cs:

public class Customer
{
[MongoId]
public string CustomerID { get; set; }
public string CustomerName { get; set; }
public string ContactName { get; set; }
public string Address { get; set; }
public string PostalCode { get; set; }
public string Tel { get; set; }
}


代码中的[MongoId]也是可以不要的,

说明一下:MongoDB在使用前,并不要求您事先创建好相应的数据库,设计数据表结构!

在MongoDB中,没有【表】的概念,取而代之的是【集合】,也没有【数据记录】的概念,取而代之的是【文档】, 我们可以把【文档】理解成一个【对象】,任意的对象,甚至可以有复杂的嵌套层次。因此,我们不用再写代码从【数据表字段】到C#类的【属性,字段】的转换了,现在直接就可以读写整个对象了。而且MongoDB不支持Join操作,所以,如果有【关联】操作,就需要你自己来处理。

封装Mongodb:

public class MyMongoDb : IDisposable
{
private Mongo _mongo;
private IMongoDatabase _db;

public MyMongoDb()
: this("Server=172.0.0.1", "MyNorthwind")
{

}

public MyMongoDb(string connectionString, string dbName)
{
if (string.IsNullOrEmpty(connectionString))
{
throw new ArgumentNullException("connectionString");

}
_mongo = new Mongo(connectionString);

//立即连接
_mongo.Connect();

if (!string.IsNullOrEmpty(dbName))
{
_db = _mongo.GetDatabase(dbName);
}
}
//切换到指定的数据库
public IMongoDatabase UseDb(string dbName)
{
if (string.IsNullOrEmpty(dbName))
throw new ArgumentNullException("dbName");
_db = _mongo.GetDatabase(dbName);
return _db;
}

//获取当前连接的数据库
public IMongoDatabase CurrentDb
{
get
{
if (_db == null)
{
throw new Exception("当前没有指定任何数据库,请在构造函数中指定数据库或调用UseDb切换数据库。");
}
return _db;
}
}
//获取当前连接数据库的指定集合(依据类型)
public IMongoCollection<T> GetCollection<T>() where T : class
{
return this.CurrentDb.GetCollection<T>();
}

//获取当前连接数据库的指定集合(依据指定名称)
public IMongoCollection<T> GetCollection<T>(string name) where T : class
{
return this.CurrentDb.GetCollection<T>(name);
}

public void Dispose()
{
if (_mongo != null)
{
_mongo.Dispose();
_mongo = null;
}
}
}
创建MongoDbHelper.cs:(MongoDb的增删改查)

public class MongoDbHelper
{
//private static readonly string _connectionStrng = "Server=127.0.0.1";
//private static readonly string __dbName = "MyNorthwind";

////新增记录
//public void Insert(Customer customer)
//{
//    customer.CustomerID = Guid.NewGuid().ToString("N");
//    using (Mongo mongo = new Mongo(_connectionStrng))//创建一个连接
//    {
//        mongo.Connect();//打开连接
//        var db = mongo.GetDatabase(__dbName);//切换到指定的数据库
//        var collection = db.GetCollection<Customer>(    );//根据类型获取相应的集合
//        collection.Insert(customer);//向集合中插入相应的对象
//    }

//}
////删除记录
//public void Delete(string customerId)
//{
//    using (Mongo mongo = new Mongo(_connectionStrng))
//    {
//        mongo.Connect();
//        var db = mongo.GetDatabase(__dbName);
//        var collection = db.GetCollection<Customer>();
//        collection.Remove(c => c.CustomerID == customerId);//从集合中删除指定的对象
//    }
//}
////更新记录
//public void Update(Customer customer)
//{
//    using (Mongo mongo = new Mongo(_connectionStrng))
//    {
//        mongo.Connect();
//        var db = mongo.GetDatabase(__dbName);
//        var collection = db.GetCollection<Customer>();
//        collection.Update(customer, (c => c.CustomerID == customer.CustomerID));

//    }
//}
////获取分页列表
//public List<Customer> GetList(string searchWord, PagingInfo pagingInfo)
//{
//    using (Mongo mongo = new Mongo(_connectionStrng))
//    {
//        mongo.Connect();
//        var db = mongo.GetDatabase(__dbName);
//        var collectin = db.GetCollection<Customer>();

//        var query = from c in collectin.Linq()//先建一个查询
//                    select c;
//        if (!string.IsNullOrEmpty(searchWord))//增加查询过滤条件
//        {
//            query = query.Where(c => c.CustomerName.Contains(searchWord) ||
//                c.Address.Contains(searchWord));
//        }
//        //先按名称排序,再返回分页结果
//        IOrderedQueryable<Customer> orderedCustomer = query.OrderBy(c => c.CustomerName);
//        return null;
//    }
//}

//public Customer GetById(string customerId)
//{
//    using (Mongo mongo = new Mongo(_connectionStrng))
//    {
//        mongo.Connect();
//        var db = mongo.GetDatabase(__dbName);
//        var collection = db.GetCollection<Customer>();

//        //查询单个对象
//        Customer customer = collection.FindOne(c => c.CustomerID == customerId);
//        return customer;
//    }
//}

public void Insert(Customer customer)
{
customer.CustomerID = Guid.NewGuid().ToString("N");
using (MyMongoDb mongo = new MyMongoDb())
{
mongo.GetCollection<Customer>().Insert(customer);
}

}
public void Delete(string customerId)
{
using (MyMongoDb mongo = new MyMongoDb())
{
mongo.GetCollection<Customer>().Remove(c => c.CustomerID == customerId);
}
}
public void Update(Customer customer)
{
using (MyMongoDb mongo = new MyMongoDb())
{
mongo.GetCollection<Customer>().Update(customer, (c => c.CustomerID == customer.CustomerID));
}
}
public Customer GetById(string customerId)
{
using (MyMongoDb mongo = new MyMongoDb())
{
return mongo.GetCollection<Customer>().FindOne(c=>c.CustomerID==customerId );
}
}
}

8.下表将帮助您更容易理解Mongo中的一些概念:

SQL术语/概念MongoDB术语/概念解释/说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins 表连接,MongoDB不支持
primary keyprimary key主键,MongoDB自动将_id字段设置为主键


1)数据库

"show dbs" 命令可以显示所有数据的列表,执行 "db" 命令可以显示当前数据库对象或集合,运行"use"命令,可以连接到一个指定的数据库。

数据库也通过名字来标识。数据库名可以是满足以下条件的任意UTF-8字符串。

不能是空字符串("")。
不得含有' '(空格)、.、$、/、\和\0 (空宇符)。
应全部小写。
最多64字节。
有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。

admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合 config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

2)文档

文档是一个键值(key-value)对(即BSON)。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。

一个简单的文档例子如下:

{"site":"www.runoob.com", "name":"菜鸟教程"}

下表列出了 RDBMS 与 MongoDB 对应的术语:

RDBMSMongoDB
数据库数据库
表格集合
文档
字段
表联合嵌入文档
主键主键 (MongoDB 提供了 key 为 _id )
数据库服务和客户端
Mysqld/Oraclemongod
mysql/sqlplusmongo
需要注意的是:

文档中的键/值对是有序的。
文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。
MongoDB区分类型和大小写。
MongoDB的文档不能有重复的键。
文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。
文档键命名规范:

键不能含有\0 (空字符)。这个字符用来表示键的结尾。
.和$有特别的意义,只有在特定环境下才能使用。
以下划线"_"开头的键是保留的(不是严格要求的)。
3)集合:db.col.findOne()

合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理系统:Relational Database Management System)中的表格。集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。

比如,我们可以将以下不同数据结构的文档插入到集合中:

{"site":"www.baidu.com"}
{"site":"www.google.com","name":"Google"}
{"site":"www.runoob.com","name":"菜鸟教程","num":5}

合法的集合名

集合名不能是空字符串""。
集合名不能含有\0字符(空字符),这个字符表示集合名的结尾。
集合名不能以"system."开头,这是为系统集合保留的前缀。
用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集合名里面包含,这是因为某些系统生成的集合中包含该字符。除非你要访问这种系统创建的集合,否则千万不要在名字里出现$。 
固定大小的集合:建一个capped collection, 指定一个collection的大小,单位是字节。collection的数据存储空间值提前分配的:db.createCollection("mycoll",{capped:true,
size:100000}),指定的存储大小包含了数据库的头信息。

在capped collection中,你能添加新的对象。能进行更新,然而,对象不会增加存储空间。如果增加,更新就会失败 。数据库不允许进行删除。使用drop()方法删除collection所有的行。注意: 删除之后,你必须显式的重新创建这个collection。在32bit机器中,capped collection最大存储为1e9( 1X109)个字节。

4)元数据

数据库的元数据是存储在集合中。它们使用了系统的命名空间:dbname.system.*

在MongoDB数据库中名字空间 <dbname>.system.* 是包含多种系统信息的特殊集合(Collection),如下:

集合命名空间描述
dbname.system.namespaces列出所有名字空间。
dbname.system.indexes列出所有索引。
dbname.system.profile包含数据库概要(profile)信息。
dbname.system.users列出所有可访问数据库的用户。
dbname.local.sources包含复制对端(slave)的服务器信息和状态。
对于修改系统集合中的对象有如下限制。

在{{system.indexes}}插入数据,可以创建索引。但除此之外该表信息是不可变的(特殊的drop index命令将自动更新相关信息)。

{{system.users}}是可修改的。 {{system.profile}}是可删除的。

5)Mongodb数据类型

下表为MongoDB中常用的几种数据类型。

数据类型描述
String字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。
Integer整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。
Boolean布尔值。用于存储布尔值(真/假)。
Double双精度浮点值。用于存储浮点值。
Min/Max keys将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。
Arrays用于将数组或列表或多个值存储为一个键。
Timestamp时间戳。记录文档修改或添加的具体时间。
Object用于内嵌文档。
Null用于创建空值。
Symbol符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。
Date日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。
Object ID对象 ID。用于创建文档的 ID。
Binary Data二进制数据。用于存储二进制数据。
Code代码类型。用于在文档中存储 JavaScript 代码。
Regular expression正则表达式类型。用于存储正则表达式。
9.Mongodb Shell 命令

use runoob , show dbs, db.

1)删除数据库: use runoob db.dropDatabase()

2)向数据库插入文档:

>use runoob

>db.col.insert({title:'MongoDB
教程', description:'MongoDB 是一个 Nosql 数据库',by:'菜鸟教程',
url:'http://www.runoob.com', tags:['mongodb','database','NoSQL'],
likes:100})

> db.col.find() /db.col.find().pretty()

{"_id":ObjectId("56064886ade2f21f36b03134"),"title":"MongoDB
教程","description":"MongoDB 是一个 Nosql 数据库","by":"菜鸟教程","url":"http://www.runoob.com","tags":["mongodb","database","NoSQL"],"likes":100}

也可以将数据定义为一个变量,然后再插入:

> document=({title:'MongoDB 教程',
description:'MongoDB 是一个 Nosql 数据库',by:'菜鸟教程',
url:'http://www.runoob.com', tags:['mongodb','database','NoSQL'],
likes:100});

> db.col.insert(document)WriteResult({"nInserted":1})

插入文档你也可以使用 db.col.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。

3)更新文档:

update 方法:

>db.col.update({'title':'MongoDB
教程'},{$set:{'title':'MongoDB'}})

以上语句只会修改第一条发现的文档,如果你要修改多条相同的文档,则需要设置 multi 参数为 true :>db.col.update({'title':'MongoDB
教程'},{$set:{'title':'MongoDB'}},{multi:true}).

save方法:save() 方法通过传入的文档来替换已有文档

>db.col.save({"_id":ObjectId("56064f89ade2f21f36b03136"),"title":"MongoDB","description":"MongoDB
是一个 Nosql 数据库","by":"Runoob","url":"http://www.runoob.com","tags":["mongodb","NoSQL"],"likes":110})

只更新第一条记录:

db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );

全部更新:

db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );

只添加第一条:

db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );

全部添加加进去:

db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );

全部更新:

db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );

只更新第一条记录:

db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

4)删除文档

>db.col.remove({'title':'MongoDB
教程'})

如果你只想删除第一条找到的记录可以设置 justOne 为 1:db.col.remove({'title','MongoDB 教程'},{'justOne ',1})

如果你想删除所有数据,可以使用以下方式(类似常规 SQL 的 truncate 命令):>db.col.remove({})

5)查询文档

>db.col.find()或>db.col.find().pretty():pretty()
方法以格式化的方式来显示所有文档。还有一个db.col.findOne() 方法,它只返回一个文档。

条件查询:

操作格式范例RDBMS中的类似语句
等于
{<key>:<value>
}
db.col.find({"by":"菜鸟教程"}).pretty()
where by = '菜鸟教程'
小于
{<key>:{$lt:<value>}}
db.col.find({"likes":{$lt:50}}).pretty()
where likes < 50
小于或等于
{<key>:{$lte:<value>}}
db.col.find({"likes":{$lte:50}}).pretty()
where likes <= 50
大于
{<key>:{$gt:<value>}}
db.col.find({"likes":{$gt:50}}).pretty()
where likes > 50
大于或等于
{<key>:{$gte:<value>}}
db.col.find({"likes":{$gte:50}}).pretty()
where likes >= 50
不等于
{<key>:{$ne:<value>}}
db.col.find({"likes":{$ne:50}}).pretty()
where likes != 50
and 条件查询:MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,类似常规 SQL 的 AND 条件。

db.col.find({"by":"菜鸟教程","title":"MongoDB
教程"}).pretty(),类似于 WHERE 语句:WHERE by='菜鸟教程' AND title='MongoDB 教程'

or条件查询:db.col.find({$or:[{"by":"菜鸟教程"},{"title":"MongoDB
教程"}]}).pretty()

AND 和 OR 联合查询:db.col.find({"likes":{$gt:50},
$or:[{"by":"菜鸟教程"},{"title":"MongoDB
教程"}]}).pretty(),类似常规 SQL 语句为:'where likes>50 AND (by = '菜鸟教程' OR title = 'MongoDB 教程')'

6)条件操作符:

MongoDB中条件操作符有:

(>) 大于 - $gt
(<) 小于 - $lt
(>=) 大于等于 - $gte
(<= ) 小于等于 - $lte
7)$type操作符:$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。

MongoDB 中可以使用的类型如下表所示:

类型数字备注
Double1 
String2 
Object3 
Array4 
Binary data5 
Undefined6已废弃。
Object id7 
Boolean8 
Date9 
Null10 
Regular Expression11 
JavaScript13 
Symbol14 
JavaScript (with scope)15 
32-bit integer16 
Timestamp17 
64-bit integer18 
Min key255Query with -1.
Max key127 
如果想获取 "col" 集合中 title 为 String 的数据,你可以使用以下命令:

db.col.find({"title":{$type:2}})

8)limit()与skip()方法:

如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。

db.col.find({},{"title":1,_id:0}).limit(2)

可以使用skip()方法跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。

db.col.find({},{"title":1,_id:0}).limit(1).skip(1)

9)Mongodb排序

在MongoDB中使用使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列。

db.col.find({},{"title":1,_id:0}).sort({"likes":-1})

按字段 likes 的降序排列:

10)Mongodb索引

MongoDB使用 ensureIndex() 方法来创建索引。、

db.col.ensureIndex({"title":1,"description":-1})

语法中 Key 值为你要创建的索引字段,1为指定按升序创建索引,如果你想按降序来创建索引指定为-1即可。ensureIndex() 方法中你也可以设置使用多个字段创建索引(关系型数据库中称作复合索引)。

ensureIndex() 接收可选参数,可选参数列表如下:

ParameterTypeDescription
backgroundBoolean建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 "background" 可选参数。 "background" 默认值为false
uniqueBoolean建立的索引是否唯一。指定为true创建唯一索引。默认值为false.
namestring索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。
dropDupsBoolean在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false.
sparseBoolean对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为
false
.
expireAfterSecondsinteger指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。
vindex version索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。
weightsdocument索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。
default_languagestring对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语
language_overridestring对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language.

在后台创建索引: db.values.ensureIndex({open:1,
close:1},{background:true})

11)Mongodb聚合:

MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)。

MongoDB中聚合的方法使用aggregate()。

计算每个作者所写的文章数,使用aggregate()计算结果如下:

> db.mycol.aggregate([{$group:{_id:"$by_user",
num_tutorial:{$sum:1}}}])

{"result":[{"_id":"w3cschool.cc","num_tutorial":2},{"_id":"Neo4j","num_tutorial":1}],"ok":1}

类似sql语句: select by_user, count(*) from mycol group by by_user

下表展示了一些聚合的表达式:

表达式描述实例
$sum计算总和。db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
$avg计算平均值db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
$min获取集合中所有文档对应值得最小值。db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
$max获取集合中所有文档对应值得最大值。db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
$push在结果文档中插入值到一个数组中。db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
$addToSet在结果文档中插入值到一个数组中,但不创建副本。db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
$first根据资源文档的排序获取第一个文档数据。db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
$last根据资源文档的排序获取最后一个文档数据db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])
12)Mongodb管道:

MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。

表达式:处理输入文档并输出。表达式是无状态的,只能用于计算当前聚合管道的文档,不能处理其它的文档。

聚合框架中常用的几个操作:

$project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。

$match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。$limit:用来限制MongoDB聚合管道返回的文档数。$skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。$unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。$group:将集合中的文档分组,可用于统计结果。$sort:将输入文档排序后输出。$geoNear:输出接近某一地理位置的有序文档。

13)Mongodb 复制

14)Mongodb分片

15)Mongodb备份与恢复

16)Mongodb监控




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: