一、数据库相关
1.创建数据库
use [数据库名字]
2.显示所有数据库
show dbs
3.显示当前数据库
db
4.删除数据库
db.dropDatabase()
二、集合相关
1.创建集合
db.createCollection([集合名字],[可选参数])
可以是如下参数:
字段 | 类型 | 描述 |
---|---|---|
capped | 布尔 | (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。当该值为 true 时,必须指定 size 参数。 |
autoIndexId | 布尔 | 3.2 之后不再支持该参数。(可选)如为 true,自动在 _id 字段创建索引。默认为 false。 |
size | 数值 | (可选)为固定集合指定一个最大值,即字节数。 如果 capped 为 true,也需要指定该字段。 |
max | 数值 | (可选)指定固定集合中包含文档的最大数量。 |
不创建集合,插入文档时自动创建
db.mycol2.insert({"name" : "菜鸟教程"})
show collections
mycol2
2.删除集合
db.[集合名字].drop()
三、文档相关
0.查看文档
db.teacher.find()
db.teacher.find().pretty()
db.teacher.findOne() # 返回一条文档
db.teacher.find().count() # 返回文档数量
(解释:表示查看teacher集合的数据)
1.插入文档
db.[集合名字].insert(数据)
eg:
db.col.insert({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
2.更新文档
MongoDB 使用 update() 和 save() 方法来更新集合中的文档。
-
update() 方法用于更新已存在的文档
语法:db.[集合名字].update(查询条件,新对象)
- s e t 修 改 文 档 中 的 指 定 属 性 − set 修改文档中的指定属性 - set修改文档中的指定属性−unset 删除文档中的指定属性
(update()方法默认修改一个,若要修改多个,使用updateMany())db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
-
save() 方法通过传入的文档来替换已有文档,
db.col.save({ "_id" : ObjectId("56064f89ade2f21f36b03136"), "title" : "MongoDB", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "Runoob", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "NoSQL" ], "likes" : 110 })
(解释:如果要替换已有文档,所有属性都不能漏掉,否则会新建文档)
3.删除文档
db.col.remove({'title':'MongoDB 教程'}) WriteResult({ "nRemoved" : 2 }) # 删除了两条数据
如果只想删除符合条件的一个,
db.col.remove({'title':'MongoDB 教程'},1) WriteResult({ "nRemoved" : 1 }) # 删除了一条数据 db.colremove({}) # 删除所有数据
(菜鸟教程上有人评论remove()方法已经过时,现在用deleteOne()和deleteMany())
删除操作通常是不会使用的,因为对于公司来说,数据是最重要的!通常会在集合中加上isDel字段,通过更新达到逻辑删除效果,类似MySQL
四、其它
1.排序
db.emp.find().sort({sal:-1})
对emp集合中的文档按sal进行排序,数值为1时是升序,-1时是降序
2.投影
db.emp.find({},{ename:1,_id:0,sal:1})
emp集合显示ename和sal字段,不显示_id字段(_id字段默认是显示的)