这个笔记主要是记录一下MongoDB的数据库操作,集合操作,文档操作的命令。官方文档有,网课笔记上也有,但是自己整理一遍印象可能会更深一层吧。
1.数据库操作
数据库的操作,在MongoDB的官方文档中https://docs.mongodb.com/manual/reference/method/js-database/
1.1创建数据库
use <数据库名称>
1.2删除数据库
db.dropDatabase()
1.3查询数据库列表
show dbs
show databases
1.4查看当前使用的数据库
db
2.集合(表)的操作
集合操作在官方文档中https://docs.mongodb.com/manual/reference/method/js-collection/
2.1创建集合
显式创建
db.createCollection("集合名称")
隐式创建(插入文档自动创建)
db.集合名.insertOne( { x: 1 } )
db.集合名.createIndex( { y: 1 } )
2.2删除集合
db.集合名.drop()
2.3查看数据库下所有集合
show tables
show collections
db.getCollectionNames()
3.文档的操作
3.1新增文档
3.1.1单条新增
db.集合名.insertOne(json对象串)
3.1.2批量新增
db.inventory.insertMany(json数组串)
db.inventory.insert(json数组串)
3.1.3try-catch新增
try{
db.inventory.insertMany(json数组串)
}catch(e){
print(e)
}
3.2删除文档
3.2.1单个文档删除
db.集合名.deleteOne(json串条件)
3.2.2批量删除
db.集合名.deleteMany(json串条件)
db.集合名.remove(json串条件)
3.3修改文档
在mysql中修改的语句一把是
update 表 set 字段1=xx,字段2=xx,where 字段n=xxx;
db.comment.insertMany([{"_id":"1","articleid":"100001","content":"我们不应该把清晨浪费在手机上,健康很重要,一杯温水幸福你我他。","userid":"1002","nickname":"相忘于江湖","createdatetime":new Date("2019-08-05T22:08:15.522Z"),"likenum":NumberInt(1000),"state":"1"},{"_id":"2","articleid":"100001","content":"我夏天空腹喝凉开水,冬天喝温开水","userid":"1005","nickname":"伊人憔悴","createdatetime":new Date("2019-08-05T23:58:51.485Z"),"likenum":NumberInt(888),"state":"1"},{"_id":"3","articleid":"100001","content":"我一直喝凉开水,冬天夏天都喝。","userid":"1004","nickname":"杰克船长","createdatetime":new Date("2019-08-06T01:05:06.321Z"),"likenum":NumberInt(666),"state":"1"},{"_id":"4","articleid":"100001","content":"专家说不能空腹吃饭,影响健康。","userid":"1003","nickname":"凯撒","createdatetime":new Date("2019-08-06T08:18:35.288Z"),"likenum":NumberInt(2000),"state":"1"},{"_id":"5","articleid":"100001","content":"研究表明,刚烧开的水千万不能喝,因为烫嘴。","userid":"1003","nickname":"凯撒","createdatetime":new Date("2019-08-06T11:01:02.521Z"),"likenum":NumberInt(3000),"state":"1"}])
3.3.1覆盖修改(默认单条,可以设置)
db.comment.update({"_id":"1"},{"content":"hellomongo"})
3.3.2局部修改
db.comment.update({"_id":"2"},{$set:{"content":"hellomongo"}})
db.comment.updateOne({"_id":"2"},{$set:{"content":"hellomongo"}})
3.3.3批量修改
db.comment.update({"userid":"1003"},{$set:{"content":"hello1"}},{multi:true})
db.comment.updateMany({"userid":"1003"},{$set:{"content":"helloworld"}})
3.3.4字段自增
db.inventory.update({qty:50},{$inc:{qty:NumberInt(100)}})
db.inventory.updateOne({},{$inc:{qty:NumberInt(100)}})
db.inventory.updateMany({},{$inc:{qty:NumberInt(100)}})
3.4查询文档
查询文档是所有文档操作的核心,删除、更新都需要学习条件编写方式。
3.4.1查询关键字 find
db.集合名.find({}) 或 db.集合名.find()
3.4.2等值查询
select * from 集合名 where 字段=值
db.集合名.find({"字段":"值"})
3.4.3不等值与in查询
```bash db.集合名.find({“qty”:{$in:[25,50]}})
db.集合名.find({“qty”:{$lt:44}})
<a name="Z0B2K"></a>
### 3.4.4AND查询
- 显式查询
```bash
db.inventory.find({$and:[{"status":"A"},{"qty":{$lt:30}}]})
- 隐式查询
db.inventory.find({"status":"A","qty":{$lt:30}})
3.4.5OR查询
db.inventory.find({$or:[{"status":"A"},{"qty":{$lt:30}}]})
3.4.6分页+排序
db.inventory.find().skip(1).limit(2).sort({qty:1})
3.6.5计数
db.inventory.count()
4.索引操作
MongoDB中索引和Mysql中的索引相似(基本一致),建立在集合上。4.1创建索引
db.集合名.createIndex({字段:排序规则(1-升序、2-降序),字段:排序规则(1-升序、2-降序),...})
4.2删除索引
db.集合名.dropIndex("qty_1") 或 db.集合名.dropIndexes()
db.集合名.dropIndexes()
4.3查看索引
db.集合名.getIndexes()
5.执行计划
db.集合名.find({qty:125}).explain()