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({})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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