MongoDB 命令

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: MongoDB 命令

image.png

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({})


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
4月前
|
存储 JSON NoSQL
3-MongoDB常用命令
MongoDB常用命令
113 2
|
6月前
|
NoSQL 数据可视化 关系型数据库
mongoDB入门教程三:数据库的创建和删除(增删改查)基本命令
mongoDB入门教程三:数据库的创建和删除(增删改查)基本命令
142 0
|
6月前
|
存储 JSON NoSQL
数据库系列课程(22)-MongoDB 常用命令
数据库系列课程(22)-MongoDB 常用命令
209 0
|
SQL NoSQL MongoDB
MongoDB---基本命令
MongoDB---基本命令
MongoDB---基本命令
|
23天前
|
JSON NoSQL MongoDB
mongodb 命令行连接及基础命令
mongodb 命令行连接及基础命令
|
4月前
|
存储 JSON NoSQL
3-MongoDB常用命令
#3-MongoDB常用命令
|
9月前
|
存储 NoSQL MongoDB
MongoDB常用命令(2)
1、创建数据库
482 0
|
9月前
|
NoSQL 关系型数据库 MySQL
【Docker】Docker安装MongoDB最新版并连接使用附加docker常用命令
【Docker】Docker安装MongoDB最新版并连接使用附加docker常用命令
464 0
|
10月前
|
NoSQL 数据可视化 Linux