1. 这个笔记主要是记录一下MongoDB的数据库操作,集合操作,文档操作的命令。官方文档有,网课笔记上也有,但是自己整理一遍印象可能会更深一层吧。

1.数据库操作

数据库的操作,在MongoDB的官方文档中https://docs.mongodb.com/manual/reference/method/js-database/

1.1创建数据库

  1. use <数据库名称>

注:也是切换数据库的命令

1.2删除数据库

  1. db.dropDatabase()

1.3查询数据库列表

  1. show dbs
  2. show databases

1.4查看当前使用的数据库

  1. db

2.集合(表)的操作

集合操作在官方文档中https://docs.mongodb.com/manual/reference/method/js-collection/

2.1创建集合

  • 显式创建

    1. db.createCollection("集合名称")
  • 隐式创建(插入文档自动创建)

    1. db.集合名.insertOne( { x: 1 } )
    2. db.集合名.createIndex( { y: 1 } )

    2.2删除集合

    1. db.集合名.drop()

    2.3查看数据库下所有集合

    1. show tables
    2. show collections
    3. db.getCollectionNames()

    3.文档的操作

    文档操作官方文档也是重点的讲了。

    3.1新增文档

    新增文档包含单条文档(记录)的新增和批量新增

    3.1.1单条新增

    1. db.集合名.insertOne(json对象串)

    3.1.2批量新增

    1. db.inventory.insertMany(json数组串)
    2. db.inventory.insert(json数组串)

    3.1.3try-catch新增

    1. try{
    2. db.inventory.insertMany(json数组串)
    3. }catch(e){
    4. print(e)
    5. }

    3.2删除文档

    删除文档也包括单个删除和批量删除

    3.2.1单个文档删除

    1. db.集合名.deleteOne(json串条件)

    3.2.2批量删除

    1. db.集合名.deleteMany(json串条件)
    2. db.集合名.remove(json串条件)

    3.3修改文档

    在mysql中修改的语句一把是 update 表 set 字段1=xx,字段2=xx,where 字段n=xxx;

    1. 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覆盖修改(默认单条,可以设置)

    1. db.comment.update({"_id":"1"},{"content":"hellomongo"})

    3.3.2局部修改

    1. db.comment.update({"_id":"2"},{$set:{"content":"hellomongo"}})
    2. db.comment.updateOne({"_id":"2"},{$set:{"content":"hellomongo"}})

    3.3.3批量修改

    1. db.comment.update({"userid":"1003"},{$set:{"content":"hello1"}},{multi:true})
    2. db.comment.updateMany({"userid":"1003"},{$set:{"content":"helloworld"}})

    3.3.4字段自增

    1. db.inventory.update({qty:50},{$inc:{qty:NumberInt(100)}})
    2. db.inventory.updateOne({},{$inc:{qty:NumberInt(100)}})
    3. db.inventory.updateMany({},{$inc:{qty:NumberInt(100)}})

    3.4查询文档

    查询文档是所有文档操作的核心,删除、更新都需要学习条件编写方式。

    3.4.1查询关键字 find

    1. db.集合名.find({}) db.集合名.find()

    3.4.2等值查询

    1. select * from 集合名 where 字段=值
    2. db.集合名.find({"字段":"值"})

    3.4.3不等值与in查询

    ```bash db.集合名.find({“qty”:{$in:[25,50]}})

db.集合名.find({“qty”:{$lt:44}})

  1. <a name="Z0B2K"></a>
  2. ### 3.4.4AND查询
  3. - 显式查询
  4. ```bash
  5. db.inventory.find({$and:[{"status":"A"},{"qty":{$lt:30}}]})
  • 隐式查询
    1. db.inventory.find({"status":"A","qty":{$lt:30}})

    3.4.5OR查询

    1. db.inventory.find({$or:[{"status":"A"},{"qty":{$lt:30}}]})

    3.4.6分页+排序

    1. db.inventory.find().skip(1).limit(2).sort({qty:1})

    3.6.5计数

    1. db.inventory.count()

    4.索引操作

    MongoDB中索引和Mysql中的索引相似(基本一致),建立在集合上。

    4.1创建索引

    1. db.集合名.createIndex({字段:排序规则(1-升序、2-降序),字段:排序规则(1-升序、2-降序),...})

    4.2删除索引

    1. db.集合名.dropIndex("qty_1") db.集合名.dropIndexes()
    2. db.集合名.dropIndexes()

    4.3查看索引

    1. db.集合名.getIndexes()

    5.执行计划

    1. db.集合名.find({qty:125}).explain()