【MongoDB系列】数据库连接及基本CRUD操作


连接数据库

本地连接

连接本地数据库,默认端口为 27017

mongo

指定端口连接数据库

mongo --port 28015
远程连接
mongo "mongodb://mongodb0.example.com:28015"

mongo --host mongodb0.example.com:28015

mongo --host mongodb0.example.com --port 28015
密码连接
# mongodb://<user>@<host>:<port>/?authSource=<db>
mongo "mongodb://alice@mongodb0.examples.com:28015/?authSource=admin"

# --username <user> --password --authenticationDatabase <db>
mongo --username alice --password --authenticationDatabase admin --host mongodb0.examples.com --port 28015
连接到副本集

URI连接

# <host1>:<port1>,<host2>:<port2>/?replicaSet=<replica set name>
mongo 
"mongodb://mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017/?replicaSet=replA"

DNS连接

增加+srv开启SSL加密传输

mongo "mongodb+srv://server.example.com/"

命令行选项

#  --host <replica set name>/<host1>:<port1>,<host2>:<port2>,... 
mongo --host replA/mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017
TLS/SSL 加密连接

URI连接

mongo "mongodb://mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017/?replicaSet=replA&ssl=true"

命令行选项

mongo --ssl --host replA/mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017

数据库操作

显示当前数据库

db

数据库不存在则创建,存在则切换为当前数据库

use mydb

显示所有数据库,没有数据的数据库不显示

show dbs

删除当前数据库

db.dropDatabase()

集合操作

创建集合

创建一个集合空间大小为6142800,文档最大个数为10000的固定集合

db.createCollection("myCollection", { capped : true, autoIndexId : true, size : 
   6142800, max : 10000 })

在插入文档时,如果集合不存在,会创建集合

> db.myCollection.insertOne({name:"Pikaman",gender:1})
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e83f327ff9e47416495ae04")
}
查看集合

当前库的所有集合

> show collections
myCollection

查找集合的所有文档

> db.myCollection.find()
{ "_id" : ObjectId("5e83f327ff9e47416495ae04"), "name" : "Pikaman", "gender" : 1 }

文档JSON格式化

> db.myCollection.find().pretty()
{
    "_id" : ObjectId("5e83f327ff9e47416495ae04"),
    "name" : "Pikaman",
    "gender" : 1
}
删除集合
> db.myCollection.drop()
true

文档操作

插入文档
方法说明
db.collection.insertOne()插入一条文档
db.collection.insertMany()插入多条文档
db.collection.insert()插入多条或者一条文档
插入一条文档
> db.myCollection.insertOne({name:"Pikaman",gender:1})
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e83f327ff9e47416495ae04")
}
插入多条文档
> db.myCollection.insertMany([{name:"Tinker",gender:2},{name:"Bell",gender:1}])
{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("5e8411fcff9e47416495ae06"),
        ObjectId("5e8411fcff9e47416495ae07")
    ]
}
插入一条或者多条文档
> db.myCollection.insert({name:"Tinkerbell",gender:2})
WriteResult({ "nInserted" : 1 })

> db.myCollection.insert([{name:"Man",gender:2},{name:"Pika",gender:1}])
BulkWriteResult({
    "writeErrors" : [ ],
    "writeConcernErrors" : [ ],
    "nInserted" : 2, // 插入两条数据
    "nUpserted" : 0,
    "nMatched" : 0,
    "nModified" : 0,
    "nRemoved" : 0,
    "upserted" : [ ]
})

嵌套插入数据

db.myCollection.insert({
    "name": {
        "first": "Pika",
        "last": "man"
    },
    "gender": {
        "$numberInt": "1"
    }
})
查询文档
方法说明
db.collection.findOne()查询单条数据

根据条件查询数据

db.myCollection.findOne({"name":"Pikaman"})
db.myCollection.findOne({"name.first":"Pika"})
db.bios.find( { birth: { $gt: new Date('1940-01-01'), $lt: new Date('1960-01-01') } } )
更新文档
删除文档

参考:

MONGODB MANUAL


欢迎关注微信公众号:【皮卡战记】

皮卡战记

文章作者: Pikaman
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Pikaman !
评论
 上一篇
【工具】Typro PicGo 和 Md2All 玩转 Markdown 排版编辑 【工具】Typro PicGo 和 Md2All 玩转 Markdown 排版编辑
前言工欲善其事,必先利其器。想要高效的写出精彩的文章,需要创作者对相关领域知识的了解有足够的深度和广度,与此同时也离不开选择一套合适的排版编辑工具。如果你是不要求排版花里胡哨的创作者,并且写的文章需要同时发表在微信公众号、博客园、掘金、CS
2020-03-06
下一篇 
【MongoDB系列】用户权限访问控制 【MongoDB系列】用户权限访问控制
权限简介安装 MongoDB 后默认是不开启权限访问控制的,MongoDB 的权限控制是基于用户-角色进行鉴权的,我们可以在配置文件中设置开启权限控制,创建用户分配相应的角色。 内置角色 数据库用户角色:read、readWrite 数据
2020-03-06
  目录