基本概念:
MangoDB数据库属于NoSQL(Not Only SQL),与之相对的就是RDBMS类型数据库,比如:mysql
二者的既有联系又有区别:
(1)数据库database:二者是一样的
(2)集合Collection:相当于“表”table
(3)文档document:相当于表中的“行”row
(4)域field:相当于表中的“字段/列”column
(5)_id:相当于表中的“主键”
二、基本操作:
1. 数据库database:
(1)查看所有数据库:show dbs
(2)查看当前数据库:db
(3)创建/切换数据库:use 数据库名
注:如果数据库不存在,则创建数据库,并切换至该数据库;如果数据库存在,则至切换至数据库
> use database001
switched to db database001
(4)删除当前数据库:db.dropDatabase()
注意:在 MongoDB 中,数据库、集合只有在内容插入后才会创建!!!
就是说,创建数据库、集合(数据表)后要再插入一个文档(记录),数据库、集合才会真正创建。
> use database002
switched to db database002
> db
database002
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
> db.database002.insert({"name":"123"})
WriteResult({ "nInserted" : 1 })
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
database002 0.000GB
可以看到,在创建数据库database002后,第一次show dbs,没有显示出,有database002。当向database002中插入了数据{"name": "123"}后,show dbs,才显示有database002。
2.集合Collection:
(1)查看已有集合:show collections 或 show tables
(2)创建集合:db.createCollection(name, options)
参数:
- name:要创建的集合名称
- options(可选参数):指定有关内存大小及索引
eg:
不带options参数:
> db.createCollection("col001")
{ "ok" : 1 }
带options参数:
> db.createCollection("col002", {capped: true, autoIndexId: true, size: 128, max: 10})
{ "ok" : 1 }
在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。
> db.col003.insert({"name" : 123})
> show collections
col001
col002
col003
(3)删除集合:db.集合名.drop()
返回值:如果成功删除选定集合,则 drop() 方法返回 true,否则返回 false。
eg:删除集合“col003”
>db.col003.drop()
true
3. 文档document:
(1)插入文档:
- 插入数据:db.集合名.insert(文档, mutil=false)
- 插入单条数据:db.集合名.insertOne(文档)
- 插入多条数据:db.集合名.insertMany(文档)
eg:
#insertOne()插入单条数据: db.col001.insertOne({"name": "A", "age": 10, "status": "stu"}) #insertMany()插入多条数据: db.col001.insertMany([{"name": "B", "age": 20, "status": "teacher"},
{"name": "C", "age": 30, "status": "stu"},
{"name": "D", "age": 40, "status": "stu"}
]) #insert()既可以插入单条数据,又可以插入多条数据 db.col001.insert({"name": "E", "age": 50, "status": "stu"})
db.col001.insert([{"name": "B", "age": 20, "status": "teacher"},
{"name": "C", "age": 30, "status": "stu"},
{"name": "D", "age": 40, "status": "stu"}
)
注:col001为集合名称,如果该集合不在该数据库中,则MangoDB会自动创建该集合并插入文档
(2)删除文档:
- 删除一个或多个数据:db.集合名.remove()
- 删除一个数据:db.集合名.deleteOne()
- 删除多个数据:db.集合名.deleteMany()
(3)修改更新文档:
- 更新匹配到的一个或者多个文档:db.集合名.update()
- 只更新匹配到的一个文档:db.集合名.updateOne()
- 更新匹配到的所有文档:db.集合名.updateMany()
- 最多只更新匹配到的一个文档:db.集合名.replaceOne()
(4)查询文档:
db.集合名.find(query, projection)