MongoDB 基本命令
./mongo 进入命令行.
1、show dbs
显示当前数据库服务器上的数据库
2、use pagedb
切换到指定数据库pagedb的上下文,可以在此上下文中管理pagedb数据库以及其中的集合等
3、show collections
显示数据库中所有的集合(collection)
4、db.serverStatus()
查看数据库服务器的状态。
5、查询指定数据库统计信息
use fragment
db.stats()
6、查询指定数据库包含的集合名称列表
db.getCollectionNames()
7、创建数据库
如果你习惯了关系型数据库,你可能会寻找相关的创建数据库的命令。在MongoDB中,你可以直接通过use dbname来切换到这个数据库上下文下面,系统会自动延迟创建该数据库
8、删除数据库
直接使用db.dropDatabase()即可删除数据库。
9、创建集合
可以使用命令db.createCollection(name, { size : ..., capped : ..., max : ... } )创建集合
10、删除集合
删除集合,可以执行db.mycoll.drop()。
11、插入更新记录
直接使用集合的save方法,如下所示:
<em>db.storeCollection.save({'version':'3.5', 'segment':'e3ol6'})</em>
更新记录,使用save会将原来的记录值进行覆盖实现记录更新。
12、查询一条记录
使用findOne()函数,参数为查询条件,可选,系统会随机查询获取到满足条件的一条记录(如果存在查询结果数量大于等于1)示例如下所示:
db.storeCollection.findOne({'version':'3.5'})
{
"_id" : ObjectId("4ef970f23c1fc4613425accc"),
"version" : "3.5",
"segment" : "e3ol6"
}
13、查询多条记录
使用find()函数,参数指定查询条件,不指定条件则查询全部记录。
14、删除记录
使用集合的remove()方法,参数指定为查询条件,示例如下所示:
db.storeCollection.remove({'version':'3.5'})
db.storeCollection.findOne()
null
15、创建索引
可以使用集合的ensureIndex(keypattern[,options])方法,示例如下所示:
> use pagedb
switched to db pagedb
> db.page.ensureIndex({'title':1, 'url':-1})
> db.system.indexes.find()
{ "name" : "_id_", "ns" : "pagedb.page", "key" : { "_id" : 1 }, "v" : 0 }
{ "name" : "_id_", "ns" : "pagedb.system.users", "key" : { "_id" : 1 }, "v" : 0}
{ "_id" : ObjectId("4ef977633c1fc4613425accd"), "ns" : "pagedb.page", "key" : {"title" : 1, "url" : -1 }, "name" : "title_1_url_-1", "v" : 0 }
上述,ensureIndex方法参数中,数字1表示升序,-1表示降序。
使用db.system.indexes.find()可以查询全部索引。
16、查询索引
我们为集合建立的索引,那么可以通过集合的getIndexes()方法实现查询
当然,如果需要查询系统中全部的索引,可以使用db.system.indexes.find()函数。
17、删除索引
删除索引给出了两个方法:
db.mycoll.dropIndex(name)
db.mycoll.dropIndexes()
第一个通过指定索引名称,第二个删除指定集合的全部索引。
18、索引重建
可以通过集合的reIndex()方法进行索引的重建,示例如下所示:
> db.page.reIndex()
{
"nIndexesWas" : 2,
"msg" : "indexes dropped for collection",
"ok" : 1,
"nIndexes" : 2,
"indexes" : [
{
"name" : "_id_",
"ns" : "pagedb.page",
"key" : {
"_id" : 1
},
"v" : 0
},
{
"_id" : ObjectId("4ef977633c1fc4613425accd"),
"ns" : "pagedb.page",
"key" : {
"title" : 1,
"url" : -1
},
"name" : "title_1_url_-1",
"v" : 0
}
],
"ok" : 1
}
19、统计集合记录数
use fragment
db.baseSe.count()
统计结果,如下所示:
> use fragment
switched to db fragment
> db.baseSe.count()
36749
上述统计了数据库fragment的baseSe集合中记录数。
20、查询并统计结果记录数
use fragment
db.baseSe.find().count()
find()可以提供查询参数,然后查询并统计结果,如下所示:
> use fragment
switched to db fragment
> db.baseSe.find().count()
36749
上述执行先根据查询条件查询结果,然后统计了查询数据库fragment的baseSe结果记录集合中记录数。
21、查询指定数据库的集合当前可用的存储空间
use fragment
> db.baseSe.storageSize()
142564096
22、查询指定数据库的集合分配的存储空间
> db.baseSe.totalSize()
144096000
上述查询结果中,包括为集合(数据及其索引存储)分配的存储空间。
(三)启动与终止
1、正常启动
mongod --dbpath /usr/mongo/data --logfile /var/mongo.log
说明:
指定数据存储目录和日志目录,如果采用安全认证模式,需要加上--auth选项,如:
mongod --auth --dbpath /usr/mongo/data --logfile /var/mongo.log
2、以修复模式启动
mongod --repair
以修复模式启动数据库。
实际很可能数据库数据损坏或数据状态不一致,导致无法正常启动MongoDB服务器,根据启动信息可以看到需要进行修复。或者执行:
mongod -f /etc/mongodb.conf --repair
3、终止服务器进程
db.shutdownServer()
终止数据库服务器进程。或者,可以直接kill掉mongod进程即可。
(四)安全管理
1、以安全认证模式启动
mongod --auth --dbpath /usr/mongo/data --logfile /var/mongo.log
使用--auth选项启动mongod进程即可启用认证模式。
或者,也可以修改/etc/mongodb.conf,设置auth=true,重启mongod进程。
2、添加用户
db.addUser("admin", ",%F23_kj~00Opoo0+\/")
添加数据库用户,添加成功,则显示结果如下所示:
{
"user" : "admin",
"readOnly" : false,
"pwd" : "995d2143e0bf79cba24b58b3e41852cd"
}
(五)数据备份、恢复与迁移管理
1、备份全部数据库
mkdir testbak
cd testbak
mongodump
说明:默认备份目录及数据文件格式为./dump/[databasename]/[collectionname].bson
2、备份指定数据库
mongodump -d pagedb
说明:备份数据库pagedb中的数据。
3、备份一个数据库中的某个集合
mongodump -d pagedb -c page
说明:备份数据库pagedb的page集合。
4、恢复全部数据库
cd testbak
mongorestore --drop /opt/dump
说明:将备份的所有数据库恢复到数据库,--drop指定恢复数据之前删除原来数据库数据,否则会造成回复后的数据中数据重复。
5、恢复某个数据库的数据
cd testbak
mongorestore -d pagedb --drop /opt/dump/pagedb
说明:将备份的pagedb的数据恢复到数据库。
6、恢复某个数据库的某个集合的数据
cd testbak
mongorestore -d pagedb -c page --drop
说明:将备份的pagedb的的page集合的数据恢复到数据库。
7、向MongoDB导入数据
mongoimport -d pagedb -c page --type csv --headerline --drop < csvORtsvFile.csv
说明:将文件csvORtsvFile.csv的数据导入到pagedb数据库的page集合中,使用cvs或tsv文件的列名作为集合的列名。需要注意的是,使用--headerline选项时,只支持csv和tsv文件。
--type支持的类型有三个:csv、tsv、json
8、从向MongoDB导出数据
mongoexport -d pagedb -c page -q {} -f _id,title,url,spiderName,pubDate --csv > pages.csv
说明:将pagedb数据库中page集合的数据导出到pages.csv文件,其中各选项含义:
-f 指定cvs列名为_id,title,url,spiderName,pubDate
-q 指定查询条件
注意:
如果上面的选项-q指定一个查询条件,需要使用单引号括起来,如下所示:
mongoexport -d page -c Article -q '{"spiderName": "mafengwoSpider"}' -f _id,title,content,images,publishDate,spiderName,url --jsonArray > mafengwoArticle.txt
复制数据库
db.copyDatabase("111","222")
->use Admin (切换到创建用户) ->db.TestDb (创建数据库) ->db.addUser(“userName”,”Pwd”) 创建用户 ->db.auth(“userName”,”Pwd”) 设置用户为允许连接的用户 ->db.createCollection(“TableName”) 创建表 ->showcollections 查看表是否创建成功 ->db.TableName.Save({age:1}) 添加数据 ->db.TableName.find() 查看添加的数据是否成功(如果没有查询到任何的结果,说明添加失败) ->添加数据,如果返回的(shell):1 说明有错误
MongoDB权限管理之用户名和密码的操作
添加用户的时候必须满足以下两个条件:
1.有相关权限的情况下
2. mongod没有加--auth的情况下(如果加了,你添加权限的话 会出现下面的情况)。
----------------------------------------------------------------
> use admin
switched to db admin
> db.addUser('sa','sa')
Fri Jul 22 14:31:13 uncaught exception: error {
"$err" : "unauthorized db:admin lock type:-1 client:127.0.0.1",
"code" : 10057
}
>
---------------------------------------------------------------------
报错了......
所以我们添加用户时必须先在没有加--auth的时候添加个super admin。
服务起来后,进入./mongo
-----------------------------------------------------------------
> use admin
switched to db admin
> db.addUser('sa','sa')
{
"_id" : ObjectId("4e2914a585178da4e03a16c3"),
"user" : "sa",
"readOnly" : false,
"pwd" : "75692b1d11c072c6c79332e248c4f699"
}
>
---------------------------------------------------------------------
这样就说明 已经成功建立了,然后我们试一下权限。
----------------------------------------------------------------------
> show collections
system.indexes
system.users
----------------------------------------------------------------------
在没有加--auth的情况下 可以正常访问admin local默认的两个表。
-----------------------------------------------------------------------
> db.system.users.find()
{ "_id" : ObjectId("4e2914a585178da4e03a16c3"), "user" : "sa", "readOnly" : false, "pwd" : "75692b1d11c072c6c79332e248c4f699" }>
-----------------------------------------------------------------------
已经成功建立。
下面把服务加上--auth的选项,再进入./mongo
-----------------------------------------------------------------------
> use admin
switched to db admin
> show collections
Fri Jul 22 14:38:49 uncaught exception: error: {
"$err" : "unauthorized db:admin lock type:-1 client:127.0.0.1",
"code" : 10057
}
>
-----------------------------------------------------------------------
可以看出已经没有访问权限了。
我们就用自己的密钥登录下:
-----------------------------------------------------------------------
> db.auth('sa','sa')
1
----------------------------------------------------------------------
返回1说明验证成功!
再show collections下就成功了。
-----------------------------------------------------------------------
登录其它表:
-----------------------------------------------------------------------
> use test
switched to db test
> show collections
Fri Jul 22 14:40:47 uncaught exception: error: {
"$err" : "unauthorized db:test lock type:-1 client:127.0.0.1",
"code" : 10057
}
--------------------------------------------------------------------
也需要验证,验证一下试试..
--------------------------------------------------------------------
> use test
switched to db test
> show collections
Fri Jul 22 14:40:47 uncaught exception: error: {
"$err" : "unauthorized db:test lock type:-1 client:127.0.0.1",
"code" : 10057
}
> db.auth('sa','sa')
0
----------------------------------------------------------------------
返回0验证失败。 为什么呢? ...
原因是因为 admin 基于全局的...所以必须从admin那么登录 然后 再use其它表才可以。
----------------------------------------------------------------------
> use admin
switched to db admin
> db.auth('sa','sa')
1
> use test
switched to db test
> show collections
>
----------------------------------------------------------------------
如果想单独访问一个表,用独立的用户名,就需要在那个表里面建相应的user。
----------------------------------------------------------------------
> use admin
switched to db admin
> db.auth('sa','sa')
1
> use test
switched to db test
> db.addUser('test','test')
{
"user" : "test",
"readOnly" : false,
"pwd" : "a6de521abefc2fed4f5876855a3484f5"
}
>
----------------------------------------------------------------------
当然必须有相关权限才可以建立。
再登录看看:
----------------------------------------------------------------------
> use test
switched to db test
> show collections
Fri Jul 22 14:45:08 uncaught exception: error: {
"$err" : "unauthorized db:test lock type:-1 client:127.0.0.1",
"code" : 10057
}
> db.auth('test','test')
1
> show collections
system.indexes
system.users
>
----------------------------------------------------------------------
MongoDB 基本命令的更多相关文章
- mongodb基本命令,mongodb集群原理分析
mongodb基本命令,mongodb集群原理分析 集合: 1.集合没有固定数据格式. 2. 数据: 时间类型: Date() 当前时间(js时间) new Date() 格林尼治时间(object) ...
- Mongodb学习笔记二(Mongodb基本命令)
第二章 基本命令 一.Mongodb命令 说明:Mongodb命令是区分大小写的,使用的命名规则是驼峰命名法. 对于database和collection无需主动创建,在插入数据时,如果databas ...
- MongoDb进阶实践之三 Mongodb基本命令详解
一.引言 从今天开始,我要正式开始介绍MongoDB的使用方法了.在此之前,我用了两篇文章分别介绍了如何在Linux系统和Windows系统上安装和配置MongoDB系统.如 ...
- 【荐】MongoDB基本命令大全
DB Shell数据操作 shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用JavaScript脚本完成操作的. #数据库 操作 1.Help查看命令提示 > h ...
- MongoDB基本命令用
成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作. 输入help可以看到基本操作命令: show dbs:显示数据库列表 show collections:显 ...
- [转]MongoDB基本命令用
本文转自:http://www.cnblogs.com/liyonghui/p/mongodb.html 成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作. 输 ...
- MongoDB基本命令
1. 启动和停止MongoDB: 执行mongod命令启动MongoDB服务器.mongod有很多可配置的选项,我们通过mongod --help可以查看所有选项,这里仅介绍一些主要选项: - ...
- MongoDB基本命令的使用
成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作. 输入help可以看到基本操作命令: show dbs:显示数据库列表 show collections:显示 ...
- MongoDB基本命令随便敲敲
1,mongoDB状态,版本,当前连接的数据库名称
随机推荐
- C++ 学习之函数重载、基于const的重载
函数重载 函数重载的定义是:在相同的作用域中,如果函数具有相同名字而仅仅是形参表不同,此时成为函数重载.注意函数重载不能基于不同的返回值类型进行重载. 注意函数重载中的"形参表"不 ...
- How to Iterate Over a Map in Java?(如何遍历Map)
1.Iterate through the "entrySet" like so: public static void printMap(Map mp) { Iterator i ...
- WPF从我炫系列4---装饰控件的用法
这一节的讲解中,我将为大家介绍WPF装饰控件的用法,主要为大家讲解一下几个控件的用法. ScrollViewer滚动条控件 Border边框控件 ViewBox自由缩放控件 1. ScrollView ...
- c++模板入门
最近使用了c++模板,觉得非常强大,只是写起来需要掌握一点技巧.大部分模板都是直接把定义写在.h头文件,并且有些人还说这样做的原因是模板不支持分编译,可是以前的编译器对模板的支持不够好吧,但是现在完全 ...
- 在CDockablePane中嵌入CFormView
CDockablePane中嵌入CFormView与嵌入CDialogEx稍有不同,差异主要体现在CFormView类本身与CDialogEx类的不同上,CDockablePane层面的操作完全相同. ...
- 在windows系统用odbc连接
当连接的数据出现失败时,出现数据库别名仍然存在,但还是要用这个别名重新建立连接 在windows客户端,用输入db2cmd输入c:\Users\yexuxia>db2 list db direc ...
- CSS小例收藏
body { background-color: #e8dabf; background-image: url(img/bg.png), url(img/bg_tile.png); backgroun ...
- 好的 小图标 html
只需引用样式,加入字体文件到项目中就可实现 <link href="css/font-awesome.min.css" rel="stylesheet"& ...
- LightOJ 1336 Sigma Function(数论 整数拆分推论)
--->题意:给一个函数的定义,F(n)代表n的所有约数之和,并且给出了整数拆分公式以及F(n)的计算方法,对于一个给出的N让我们求1 - N之间有多少个数满足F(x)为偶数的情况,输出这个数. ...
- call_grant_sel.sql
set echo offpromptprompt =========================================================================== ...