MongoDB 命令

Docker run mongodb

docker run --name some-mongo -d mongo

进入容器

docker exec -ti some-mongo bash  

容器中连接 mongo 服务

root@88ec7a943cb7:/data/db# mongo
MongoDB shell version v3.4.10
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.10
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user
Server has startup warnings: 
2017-11-30T03:05:22.253+0000 I STORAGE  [initandlisten] 
2017-11-30T03:05:22.253+0000 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2017-11-30T03:05:22.253+0000 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2017-11-30T03:05:22.320+0000 I CONTROL  [initandlisten] 
2017-11-30T03:05:22.320+0000 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-11-30T03:05:22.320+0000 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-11-30T03:05:22.320+0000 I CONTROL  [initandlisten] 
2017-11-30T03:05:22.320+0000 I CONTROL  [initandlisten] 
2017-11-30T03:05:22.320+0000 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-11-30T03:05:22.320+0000 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2017-11-30T03:05:22.320+0000 I CONTROL  [initandlisten] 
> db
test

本地连接服务器数据库

默认端口号为 27017. mongo localhost:port/db -u username -p password

mongo 172.10.10.10:27017/db1 -u admin -p admin

Docker 运行的 mongo 进行 shell 交互模式根目录连接服务器数据库

root@fd3e075b3549:/# mongo 172.10.10.10:27017/db1 -u username -p password
MongoDB shell version v3.6.4
connecting to: mongodb://172.10.10.10:27017/db1
MongoDB server version: 3.4.9
WARNING: shell and server versions do not match
> db
db1

Docker 容器中使用管理员用户(admin)连接,连接成功后创建对应数据库以及对应的用户

$ docker exec -ti some-mongo bash
root@c6a7b5196896:/# mongo 172.10.10.18:27017/admin -u admin
MongoDB shell version v4.0.3
Enter password: 
connecting to: mongodb://172.10.10.18:27017/admin
WARNING: No implicit session: Logical Sessions are only supported on server versions 3.6 and greater.
Implicit session: dummy session
MongoDB server version: 3.4.9
WARNING: shell and server versions do not match
Server has startup warnings: 
2018-11-08T13:50:06.721+0000 I CONTROL  [initandlisten] 
2018-11-08T13:50:06.721+0000 I CONTROL  [initandlisten] ** WARNING: You are running on a NUMA machine.
2018-11-08T13:50:06.721+0000 I CONTROL  [initandlisten] **          We suggest launching mongod like this to avoid performance problems:
2018-11-08T13:50:06.721+0000 I CONTROL  [initandlisten] **              numactl --interleave=all mongod [other options]
2018-11-08T13:50:06.721+0000 I CONTROL  [initandlisten] 
2018-11-08T13:50:06.721+0000 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2018-11-08T13:50:06.721+0000 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-11-08T13:50:06.721+0000 I CONTROL  [initandlisten] 
2018-11-08T13:50:06.721+0000 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-11-08T13:50:06.721+0000 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-11-08T13:50:06.721+0000 I CONTROL  [initandlisten] 
> 

切换到 admin 数据库下

> use admin
switched to db admin

登录 admin 用户

> db.auth('admin','123456')
1

查看全局所有账户

> db.system.users.find().pretty()
{
    "_id" : "admin.admin",
    "user" : "admin",
    "db" : "admin",
    "credentials" : {
        "MONGODB-CR" : "b5097e4b94862cf48c95exxxxxxx"
    },
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ]
}
{
    "_id" : "admin.user_test",
    "user" : "user_test",
    "db" : "admin",
    "credentials" : {
        "MONGODB-CR" : "cf14962de9c8705afef86xxxxxx"
    },
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "user_test"
        }
    ]
}

创建数据库

use DATABASE_NAME

数据库不存在则创建数据库,否则切换到指定数据库

> use runoob
switched to db runoob
> db
runoob
> 

查看当前数据库下的所有用户

> use db1
switched to db db1
> show users
{
    "_id" : "db1.user_test",
    "user" : "user_test",
    "db" : "db1",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "db1"
        }
    ]
}


创建用户

use db1
db.createUser({ "user" : "db1", "pwd" : "xxxxxx", "roles" : [  { role: "readWrite", db: "db1" } ] })
db.createUser({ "user" : "test", "pwd" : "xxxxxx", "roles" : [  { role: "read", db: "db1" } ] })

查看所有数据库

> show dbs
local  0.078GB
test   0.078GB
> 

插入数据

可以看到,我们刚创建的数据库 runoob 并不在数据库的列表中, 要显示它,我们需要向 runoob 数据库插入一些数据。

> db.runoob.insert({"name":"菜鸟教程"})
WriteResult({ "nInserted" : 1 })
> show dbs
local   0.078GB
runoob  0.078GB
test    0.078GB
>

删除数据库

db.dropDatabase()

删除当前数据库,默认为 test, 可以使用 db 命令查看当前数据库名称

查询集合

show tables

创建集合

db.createCollection(name, options)

name 创建的集合的名称

options (可选) 指定有关内存大小和索引的选项

删除集合

db.collection.drop()

向集合中插入文档

db.COLLECTION_NAME.insert(document)
> show dbs
admin   0.000GB
local   0.000GB
runoob  0.000GB
> use runoob
switched to db runoob
> db
runoob
> show tables
col
> db.col.insert({title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库'})
WriteResult({ "nInserted" : 1 })

查看已插入的文档

col 是集合名,如果该集合不在该数据库中, MongoDB 会自动创建该集合并插入文档

db.collection.find(query, projection)

query :可选,使用查询操作符指定查询条件
projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)

pretty() 方法以格式化的方式来显示所有文档

db.col.find().pretty()

更新文档

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)

参数说明:
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。


> db.col.find()
{ "_id" : ObjectId("5a13f8db577a5fb9bfdbec22") }
{ "_id" : ObjectId("5a14eec1619ae743f101f2b5"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库" }
{ "_id" : ObjectId("5a150f72619ae743f101f2b6"), "title" : "Mo", "description" : "Nosql" }
> db.col.update({"title": "Mo"},{$set: {"title": "oo"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.col.find()
{ "_id" : ObjectId("5a13f8db577a5fb9bfdbec22") }
{ "_id" : ObjectId("5a14eec1619ae743f101f2b5"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库" }
{ "_id" : ObjectId("5a150f72619ae743f101f2b6"), "title" : "oo", "description" : "Nosql" }

更新多条数据

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

替换

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

db.collection.save(
   <document>,
   {
     writeConcern: <document>
   }
)


参数说明:
document : 文档数据。
writeConcern :可选,抛出异常的级别。
> db.col.find()
{ "_id" : ObjectId("5a13f8db577a5fb9bfdbec22") }
{ "_id" : ObjectId("5a14eec1619ae743f101f2b5"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库" }
{ "_id" : ObjectId("5a150f72619ae743f101f2b6"), "title" : "oo", "description" : "Nosql" }
> db.col.save({"_id": ObjectId("5a14eec1619ae743f101f2b5"),'title':'aaaa','description':'balabala...'})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.col.find()
{ "_id" : ObjectId("5a13f8db577a5fb9bfdbec22") }
{ "_id" : ObjectId("5a14eec1619ae743f101f2b5"), "title" : "aaaa", "description" : "balabala..." }
{ "_id" : ObjectId("5a150f72619ae743f101f2b6"), "title" : "oo", "description" : "Nosql" }

删除文档

remove()函数是用来移除集合中的数据

db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)

参数说明:
query :(可选)删除的文档的条件。
justOne : (可选)如果设为 true 或 1,则只删除一个文档。
writeConcern :(可选)抛出异常的级别。

删除第一条找到的记录可以设置 justOne 为 1

db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)

删除所有数据

db.col.remove({})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,580评论 18 139
  • MongoDB文档 MongoDB 概念解析 不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基...
    birdflying阅读 1,973评论 0 27
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,392评论 25 707
  • 对于从小就有点胖胖的我来说,想变瘦的愿望一直都没有停过却也没有实现过…… 小时候,爸妈说,小孩子要长胖点才健康发育...
    水瓶细语阅读 506评论 0 1
  • 初识宫崎骏,是高中二年级,那是在每周一次的美术课上,屠老师会给我们放电影看,依稀还记得的有千与千寻和幽灵公主!一节...
    阿拉半仙阅读 387评论 0 3