MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。html
在高负载的状况下,添加更多的节点,能够保证服务器性能。linux
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。web
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档相似于 JSON 对象。字段值能够包含其余文档,数组及文档数组。正则表达式
官网:https://www.mongodb.com/download-center#communitysql
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz # 下载 tar -zxvf mongodb-linux-x86_64-3.0.6.tgz # 解压 mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb # 将解压包拷贝到指定目录 export PATH=<mongodb-install-directory>/bin:$PATH #<mongodb-install-directory> 为Mongo的安装路径,如本文的 /usr/local/mongodb mkdir -p /data/db #建立数据库目录(启动指定--dbpath)
suoningdeMacBook-Pro:~ suoning$ cat /usr/local/etc/mongod.conf systemLog: destination: file path: /usr/local/var/log/mongodb/mongo.log logAppend: true storage: dbPath: /usr/local/var/mongodb net: bindIp: 127.0.0.1 port: 11811 suoningdeMacBook-Pro:~ suoning$
$ ./mongod $ ./mongod --dbpath=/data/db --rest # 默认端口为:27017 # MongoDB 提供了简单的 HTTP 用户界面。 若是你想启用该功能,须要在启动的时候指定参数 --rest # MongoDB 的 Web 界面访问端口比服务的端口多1000。若是你的MongoDB运行端口使用默认的27017,你能够在端口号为28017访问web用户界面,即地址为:http://localhost:28017
$ sudo mongo $ sudo mongo --port 11811 $ sudo mongo -u root -p pwd 127.0.0.1:11811/test
> > use admin switched to db admin > db admin > db.createUser({user:'suoning',pwd:'123456',roles:[{role:'userAdminAnyDatabase',db:'admin'}]}) Successfully added user: { "user" : "suoning", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] } > exit bye
版本区别与更多配置:https://docs.mongodb.com/manual/administration/configuration/mongodb
suoningdeMacBook-Pro:~ suoning$ cat /usr/local/etc/mongod.conf systemLog: destination: file path: /usr/local/var/log/mongodb/mongo.log logAppend: true storage: dbPath: /usr/local/var/mongodb net: bindIp: 127.0.0.1 port: 11811 security: authorization: enabled suoningdeMacBook-Pro:~ suoning$
> > show dbs 2017-04-25T08:41:50.126+0800 E QUERY [thread1] Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }", "code" : 13, "codeName" : "Unauthorized" } : _getErrorWithCode@src/mongo/shell/utils.js:25:13 Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1 shellHelper.show@src/mongo/shell/utils.js:761:19 shellHelper@src/mongo/shell/utils.js:651:15 @(shellhelp2):1:1 > > use admin switched to db admin > db.auth('suoning','123456') 1 > show dbs admin 0.000GB local 0.000GB >
> use admin switched to db admin > db.auth('suoning','123456') 1 > > use mydb switched to db mydb > db.createUser({user:'nick',pwd:'123456',roles:[{role:'readWrite',db:'mydb'}]}) Successfully added user: { "user" : "nick", "roles" : [ { "role" : "readWrite", "db" : "mydb" } ] } > > db.auth('nick','123456') 1 >
> db.dropUser("nick") true
> use admin switched to db admin > db.auth('suoning','123456') 1 > db.system.users.find() { "_id" : "admin.suoning", "user" : "suoning", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "XXW+MD0TENKSkzk0bM2EGw==", "storedKey" : "iIuv5DpGOksvaFpFOSnAIRSwh+w=", "serverKey" : "ZGA7/Lkjv+RJX3fNANQN9hgBUwY=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] } { "_id" : "mydb.nick", "user" : "nick", "db" : "mydb", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "j71pQs/OR1eRtRa1IT80+w==", "storedKey" : "5hkHmU+FwdENDgGjV0wIbmTAOrQ=", "serverKey" : "Qs+c0gfGNUpwD/ZKgeOackzwNxI=" } }, "roles" : [ { "role" : "readWrite", "db" : "mydb" } ] } >
角色说明: Read:容许用户读取指定数据库 readWrite:容许用户读写指定数据库 dbAdmin:容许用户在指定数据库中执行管理函数,如索引建立、删除,查看统计或访问system.profile userAdmin:容许用户向system.users集合写入,能够找指定数据库里建立、删除和管理用户 clusterAdmin:只在admin数据库中可用,赋予用户全部分片和复制集相关函数的管理权限。 readAnyDatabase:只在admin数据库中可用,赋予用户全部数据库的读权限 readWriteAnyDatabase:只在admin数据库中可用,赋予用户全部数据库的读写权限 userAdminAnyDatabase:只在admin数据库中可用,赋予用户全部数据库的userAdmin权限 dbAdminAnyDatabase:只在admin数据库中可用,赋予用户全部数据库的dbAdmin权限。 root:只在admin数据库中可用。超级帐号,超级权限
数据类型 | 描述 |
---|---|
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 | 正则表达式类型。用于存储正则表达式。 |
> show dbs admin 0.000GB local 0.000GB > > use mydb switched to db mydb > db mydb > > db.mydb.insert({"name":"Nick","age":18}) WriteResult({ "nInserted" : 1 }) > > show dbs admin 0.000GB local 0.000GB mydb 0.000GB > > show tables; mydb >
> db.dropUser("nick") true > > db.createUser({user:'nick',pwd:'123456',roles:[{role:'dbAdmin',db:'mydb'}]}) Successfully added user: { "user" : "nick", "roles" : [ { "role" : "dbAdmin", "db" : "mydb" } ] } > > db.auth("nick","123456") 1 > > use mydb switched to db mydb > db mydb > > show dbs; admin 0.000GB local 0.000GB mydb 0.000GB > > db.dropDatabase() { "dropped" : "mydb", "ok" : 1 } > > show dbs; admin 0.000GB local 0.000GB >
> db; mydb > show tables; mydb > > db.mydb.drop(); true > show tables; >
使用 insert() 或 save() 方法向集合中插入文档,语法以下:docker
db.COLLECTION_NAME.insert(document)
建立读写用户:shell
> db.createUser({user:'ning',pwd:'123456',roles:[{role:'readWrite',db:'mydb'}]}) Successfully added user: { "user" : "ning", "roles" : [ { "role" : "readWrite", "db" : "mydb" } ] } > > db.auth('ning','123456') 1 >
插入数据:数据库
> > db.user.insert({'name':'nick','age':18,'girlfriend':['jenny','coco','julia']}) WriteResult({ "nInserted" : 1 }) > > show tables user >
> > vb = ({'sex':'man'}); { "sex" : "man" } > db.user.insert(vb); WriteResult({ "nInserted" : 1 }) >
插入文档你也可使用 db.col.save(document) 命令。若是不指定 _id 字段 save() 方法相似于 insert() 方法。若是指定 _id 字段,则会更新该 _id 的数据。express
remove() 方法的基本语法格式以下所示:
db.collection.remove( <query>, <justOne> ) # MongoDB 是 2.6 版本之后的,语法格式以下: db.collection.remove( <query>, { justOne: <boolean>, writeConcern: <document> } ) # 参数说明: query :(可选)删除的文档的条件。 justOne : (可选)若是设为 true 或 1,则只删除一个文档。 writeConcern :(可选)抛出异常的级别。
删除数据:
> db.user.find() { "_id" : ObjectId("58fef7d55b9ea92ab29fbd4b"), "name" : "nick", "age" : 18, "girlfriend" : [ "jenny", "coco", "julia" ] } { "_id" : ObjectId("58fef9165b9ea92ab29fbd4c"), "sex" : "man" } > > db.user.remove({'sex':'man'}) WriteResult({ "nRemoved" : 1 }) > > db.user.find() { "_id" : ObjectId("58fef7d55b9ea92ab29fbd4b"), "name" : "nick", "age" : 18, "girlfriend" : [ "jenny", "coco", "julia" ] } >
删除第一条找到的记录能够设置 justOne 为 1:
>db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
删除全部数据:
>db.col.remove({}) >db.col.find() >
# 只更新一条 > db.user.find() { "_id" : ObjectId("58fef7d55b9ea92ab29fbd4b"), "name" : "nick", "age" : 21, "girlfriend" : [ "jenny", "coco", "julia" ] } { "_id" : ObjectId("58feffe55b9ea92ab29fbd4d"), "name" : "jenny", "age" : 21 } > > db.user.update({'age':21},{$set:{'age':22}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > > db.user.find() { "_id" : ObjectId("58fef7d55b9ea92ab29fbd4b"), "name" : "nick", "age" : 22, "girlfriend" : [ "jenny", "coco", "julia" ] } { "_id" : ObjectId("58feffe55b9ea92ab29fbd4d"), "name" : "jenny", "age" : 21 } > # 更新多条 > db.user.find() { "_id" : ObjectId("58fef7d55b9ea92ab29fbd4b"), "name" : "nick", "age" : 21, "girlfriend" : [ "jenny", "coco", "julia" ] } { "_id" : ObjectId("58feffe55b9ea92ab29fbd4d"), "name" : "jenny", "age" : 21 } > > db.user.update({'age':21},{$set:{'age':22}},{multi:true}) WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 }) > > db.user.find() { "_id" : ObjectId("58fef7d55b9ea92ab29fbd4b"), "name" : "nick", "age" : 22, "girlfriend" : [ "jenny", "coco", "julia" ] } { "_id" : ObjectId("58feffe55b9ea92ab29fbd4d"), "name" : "jenny", "age" : 22 } >
save() 方法经过传入的文档来替换已有文档。语法格式以下:
db.collection.save( <document>, { writeConcern: <document> } ) 参数说明: document : 文档数据。 writeConcern :可选,抛出异常的级别。
> db.user.find() { "_id" : ObjectId("58fef7d55b9ea92ab29fbd4b"), "name" : "nick", "age" : 22, "girlfriend" : [ "jenny", "coco", "julia" ] } > > db.user.save({ "_id" : ObjectId("58fef7d55b9ea92ab29fbd4b"), "name" : "nick", "age" : 18, "girlfriend" : [ "jenny", "julia" ] }) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > > db.user.find().pretty() { "_id" : ObjectId("58fef7d55b9ea92ab29fbd4b"), "name" : "nick", "age" : 18, "girlfriend" : [ "jenny", "julia" ] } >
查询数据的语法格式以下:
db.mydb.find(query, projection) query :可选,使用查询操做符指定查询条件 projection :可选,使用投影操做符指定返回的键。查询时返回文档中全部键值, 只需省略该参数便可(默认省略)。
pretty() 方法以格式化的方式来显示全部文档。 >db.mydb.find().pretty()
操做 | 格式 | 范例 | RDBMS中的相似语句 |
---|---|---|---|
等于 | {<key>:<value> } |
db.col.find({"name":"nick"}).pretty() |
where name = 'nick' |
小于 | {<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 |
获取"col"集合中 "likes" 大于100,小于 200 的数据,你可使用如下命令:
db.col.find({likes : {$lt :200, $gt : 100}})
and: >db.col.find({key1:value1, key2:value2}).pretty() or: >db.col.find( { $or: [ {key1: value1}, {key2:value2} ] } ).pretty()
Limit、Skip
limit()方法基本语法以下所示:
>db.COLLECTION_NAME.find().limit(NUMBER)
skip() 方法脚本语法格式以下:
使用skip()方法来跳过指定数量的数据,skip方法接受一个数字参数做为跳过的记录条数,默认为0。
>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
sort()方法对数据进行排序,sort()方法能够经过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列。
>db.COLLECTION_NAME.find().sort({KEY:1})
获取 "col" 集合中 title 为 String 的数据:
db.col.find({"title" : {$type : 2}})
对应匹配类型:
类型 | 数字 | 备注 |
---|---|---|
Double | 1 | |
String | 2 | |
Object | 3 | |
Array | 4 | |
Binary data | 5 | |
Undefined | 6 | 已废弃。 |
Object id | 7 | |
Boolean | 8 | |
Date | 9 | |
Null | 10 | |
Regular Expression | 11 | |
JavaScript | 13 | |
Symbol | 14 | |
JavaScript (with scope) | 15 | |
32-bit integer | 16 | |
Timestamp | 17 | |
64-bit integer | 18 | |
Min key | 255 | Query with -1. |
Max key | 127 |
使用 ensureIndex() 方法来建立索引,语法以下:
>db.COLLECTION_NAME.ensureIndex({KEY:1}) 语法中 Key 值为你要建立的索引字段,1为指定按升序建立索引,若是你想按降序来建立索引指定为-1便可
复合索引 db.col.ensureIndex({"title":1,"description":-1})
后台执行 经过在建立索引时加background:true 的选项,让建立工做在后台执行 db.values.ensureIndex({open: 1, close: 1}, {background: true})
ensureIndex() 接收可选参数,可选参数列表以下:
Parameter | Type | Description |
---|---|---|
background | Boolean | 建索引过程会阻塞其它数据库操做,background可指定之后台方式建立索引,即增长 "background" 可选参数。 "background" 默认值为false。 |
unique | Boolean | 创建的索引是否惟一。指定为true建立惟一索引。默认值为false. |
name | string | 索引的名称。若是未指定,MongoDB的经过链接索引的字段名和排序顺序生成一个索引名称。 |
dropDups | Boolean | 在创建惟一索引时是否删除重复记录,指定 true 建立惟一索引。默认值为 false. |
sparse | Boolean | 对文档中不存在的字段数据不启用索引;这个参数须要特别注意,若是设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false. |
expireAfterSeconds | integer | 指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。 |
v | index version | 索引的版本号。默认的索引版本取决于mongod建立索引时运行的版本。 |
weights | document | 索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其余索引字段的得分权重。 |
default_language | string | 对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语 |
language_override | string | 对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language. |
索引不能被如下的查询使用:
聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。
聚合的方法使用aggregate()方法,基本语法格式以下所示:
>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
> db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}]) 以上实例相似sql语句: select by_user, count(*) from mycol group by by_user 咱们经过字段by_user字段对数据进行分组,并计算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"}}}]) |
MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操做是能够重复的。
表达式:处理输入文档并输出。表达式是无状态的,只能用于计算当前聚合管道的文档,不能处理其它的文档。
一、$project实例
db.article.aggregate( { $project : { title : 1 , author : 1 , }} ); 这样的话结果中就只还有_id,tilte和author三个字段了,默认状况下_id字段是被包含的,若是要想不包含_id话能够这样: db.article.aggregate( { $project : { _id : 0 , title : 1 , author : 1 }});
2.$match实例
db.articles.aggregate( [ { $match : { score : { $gt : 70, $lte : 90 } } }, { $group: { _id: null, count: { $sum: 1 } } } ] ); $match用于获取分数大于70小于或等于90记录,而后将符合条件的记录送到下一阶段$group管道操做符进行处理。
3.$skip实例
db.article.aggregate( { $skip : 5 }); 通过$skip管道操做符处理后,前五个文档被"过滤"掉。
mongo执行计划分析,详细点此处。
> db.user.find({"name":"nick"}).explain(); > db.user.find({"name":"nick"}).explain(true);
关键参数详细:
executionStats.executionSuccess
是否执行成功
executionStats.nReturned
查询的返回条数
executionStats.executionTimeMillis
总体执行时间
executionStats.totalKeysExamined
索引扫描次数
executionStats.totalDocsExamined
document扫描次数
使用 hint 来强制 MongoDB 使用一个指定的索引。
这种方法某些情形下会提高性能。 一个有索引的 collection 而且执行一个多字段的查询(一些字段已经索引了)。
以下查询指定了使用 naem 和 age 索引字段来查询: > db.user.find({"name":"nick","age":18}).hint({"name":1,"age":1});
http://www.cnblogs.com/suoning/p/6759367.html
MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你能够从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:https://www.mongodb.com/download-center#community
注意:在 MongoDB 2.2 版本后已经再也不支持 Windows XP 系统。最新版本也已经没有了 32 位系统的安装文件。
根据你的系统下载 32 位或 64 位的 .msi 文件,下载后双击该文件,按操做提示安装便可。
安装过程当中,你能够经过点击 "Custom(自定义)" 按钮来设置你的安装目录。
建立数据目录
MongoDB将数据目录存储在 db 目录下。可是这个数据目录不会主动建立,咱们在安装完成后须要建立它。请注意,数据目录应该放在根目录下((如: C:\ 或者 D:\ 等 )。
在本教程中,咱们已经在 C 盘安装了 mongodb,如今让咱们建立一个 data 的目录而后在 data 目录里建立 db 目录。
c:\>cd c:\ c:\>mkdir data c:\>cd data c:\data>mkdir db c:\data>cd db c:\data\db>
你也能够经过 window 的资源管理器中建立这些目录,而不必定经过命令行。
为了从命令提示符下运行 MongoDB 服务器,你必须从 MongoDB 目录的 bin 目录中执行 mongod.exe 文件。
C:\mongodb\bin\mongod --dbpath c:\data\db
若是执行成功,会输出以下信息:
2015-09-25T15:54:09.212+0800 I CONTROL Hotfix KB2731284 or later update is not installed, will zero-out data files 2015-09-25T15:54:09.229+0800 I JOURNAL [initandlisten] journal dir=c:\data\db\j ournal 2015-09-25T15:54:09.237+0800 I JOURNAL [initandlisten] recover : no journal fil es present, no recovery needed 2015-09-25T15:54:09.290+0800 I JOURNAL [durability] Durability thread started 2015-09-25T15:54:09.294+0800 I CONTROL [initandlisten] MongoDB starting : pid=2 488 port=27017 dbpath=c:\data\db 64-bit host=WIN-1VONBJOCE88 2015-09-25T15:54:09.296+0800 I CONTROL [initandlisten] targetMinOS: Windows 7/W indows Server 2008 R2 2015-09-25T15:54:09.298+0800 I CONTROL [initandlisten] db version v3.0.6 ……
咱们能够在命令窗口中运行 mongo.exe 命令便可链接上 MongoDB,执行以下命令:
C:\mongodb\bin\mongo.exe
管理员模式打开命令行窗口
建立目录,执行下面的语句来建立数据库和日志文件的目录
mkdir c:\data\db mkdir c:\data\log
建立配置文件
建立一个配置文件。该文件必须设置 systemLog.path 参数,包括一些附加的配置选项更好。
例如,建立一个配置文件位于 C:\mongodb\mongod.cfg,其中指定 systemLog.path 和 storage.dbPath。具体配置内容以下:
systemLog: destination: file path: c:\data\log\mongod.log storage: dbPath: c:\data\db
经过执行mongod.exe,使用--install选项来安装服务,使用--config选项来指定以前建立的配置文件。
"C:\mongodb\bin\mongod.exe" --config "C:\mongodb\mongod.cfg" --install
要使用备用 dbpath,能够在配置文件(例如:C:\mongodb\mongod.cfg)或命令行中经过 --dbpath 选项指定。
若是须要,您能够安装 mongod.exe 或 mongos.exe 的多个实例的服务。只须要经过使用 --serviceName 和 --serviceDisplayName 指定不一样的实例名。只有当存在足够的系统资源和系统的设计须要这么作。
启动MongoDB服务
net start MongoDB
关闭MongoDB服务
net stop MongoDB
移除MongoDB服务
"C:\mongodb\bin\mongod.exe" --remove
命令行下运行 MongoDB 服务器 和 配置 MongoDB 服务 任选一个方式启动就能够。
任选一个操做就好
若是你须要进入MongoDB后台管理,你须要先打开mongodb装目录的下的bin目录,而后执行mongo.exe文件,MongoDB Shell是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操做和管理的交互式环境。
当你进入mongoDB后台后,它默认会连接到 test 文档(数据库):
C:\Users\user>mongo MongoDB shell version v3.4.10 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.10 Server has startup warnings: 2017-12-13T15:38:58.898+0800 I CONTROL [initandlisten] 2017-12-13T15:38:58.898+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2017-12-13T15:38:58.898+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2017-12-13T15:38:58.898+0800 I CONTROL [initandlisten] >
因为它是一个JavaScript shell,您能够运行一些简单的算术运算:
> 2 + 2 4 >
db 命令用于查看当前操做的文档(数据库):
> db
test
>
插入一些简单的记录并查找它:
> db.runoob.insert({x:10}) WriteResult({ "nInserted" : 1 }) > db.runoob.find() { "_id" : ObjectId("5604ff74a274a611b0c990aa"), "x" : 10 } >
第一个命令将数字 10 插入到 runoob 集合的 x 字段中。
http://www.runoob.com/mongodb/mongodb-window-install.html
基于docker的mongo
在 docker 上运行 MongoDB
首先,获取 MongoDB 的镜像:
$ docker pull mongo
而后启动 MongoDB 容器
$ docker run -d --name any-mongo -p 27017:27017 mongo
Idea中使用Mongo plugin: