mongodb入门

推荐网站

  • Docker菜鸟教程
  • Bilibili黑马教程

准备事项

  • 安装mongdb
  • 建议使用docker安装,Docker教程

常用命令

数据库命令

  • 创建数据库
-- 创建数据库
use articledb
  • 查看当前所有数据库
-- 查看当前所有库(新建的数据库如果没有集合不会显示)
show dbs
show databases
  • 查看正在使用的数据库
-- 查看正在使用的数据库
db
  • 删除数据库
-- 删除数据库
db.dropDatabase("articledb")
  • 创建集合(表)
-- 创建集合(表)
db.createCollection("mycollections")
  • 查看数据库内所有集合(表)
-- 查看数据库内所有集合(表)
show tables
show collections
  • 删除集合(表)
-- 删除集合(表)
db.mycollections.drop()
  • 插入一条文档(数据)
-- 插入一条文档(数据)
-- 如果不存在comment数据库则隐性创建
-- 可以指定_id主键值,不指定则由系统生成UUID
db.comment.insert(
    {
        "articleid": "100000",
        "content": "今天天气真好,阳光明媚",
        "userid": "1001",
        "nickname": "Rose",
        "createdatetime": new Date(),
        "likenum": NumberInt(10),
        "state": null
    }
)
  • 批量插入文档(数据)
-- 批量插入文档(数据)
-- 批量插入不会因为异常回滚,可以用try-catch捕获异常并打印
-- 数字格式不支持可以使用NumberInt转换格式
try{
    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"
        }
    ]);
}catch(e) {
    print(e);
}

集合(表)命令

  • 查询全部文档(数据)
-- 查询全部文档(数据)
db.comment.find()
db.comment.find({})
  • 只查询一条
-- 只查询一条
db.comment.findOne()
  • 根据userid查询
-- 根据userid查询
db.comment.find({userid:'1003'})
  • 投影查询(指定查询的数据列)
-- 投影查询(指定数据列)
-- 默认_id会显示,除非指定_id:0
db.comment.find({userid:"1003"},{userid:1,nickname:1})
  • 文档(数据)覆盖更新
-- 覆盖更新
db.comment.update({_id:"1"},{likenum:NumberInt(1001)})
  • 文档(数据)局部更新
-- 局部更新
db.comment.update({_id:"2"},{$set:{likenum:NumberInt(889)}})
  • 批量更新
-- 批量更新(不携带{multi:true}默认只会修改第一条)
db.comment.update({userid:"1003"},{$set:{nickname:"凯撒大帝"}},{multi:true})
  • 自增函数
-- 自增$inc
db.comment.update({_id:"3"},{$inc:{likenum:NumberInt(1)}})
  • 文档(数据删除)
-- 全部删除
db.comment.remove({})
  • 根据条件删除
-- 根据条件删除
db.comment.remove({_id:"1"})
  • 聚合操作
-- aggregate聚合操作(group by)
-- $sum $avg $min $max
db.comment.aggregate([{
    $group: {
        _id: "$nickname",               
        num_tutorial: {
            $sum: 1
        }
    }
}])

-- count求和
db.comment.count()
db.comment.count({userid:"1003"})
  • 分页查询
-- 分页
-- 第一页(每页三条)
-- limit:每页显示数量;skip:跳过前几行数据
db.comment.find().skip(0).limit(3)
db.comment.find().skip(3).limit(3)
  • 排序
-- 排序(1:asc;-1:desc)
db.comment.find().sort({userid:-1,likenum:1})
  • 正则表达式查询
-- 正则表达式查询
db.comment.find({content:{$regex:"开水"}})
db.comment.find({content:/^专家/})
  • 比较查询
-- 比较查询
-- $ne !=  $gt > $lt < $gte >= $lte <=
db.comment.find({likenum:{$ne:NumberInt(1000)}})
  • 包含查询
-- 包含查询(IN NOT IN)
-- 包含
db.comment.find({userid:{$in:["1003","1004"]}})
--  不包含
db.comment.find({userid:{$nin:["1003","1004"]}})
  • 多条件查询(AND OR)
-- AND查询
db.comment.find({
    $and: [{
        likenum: {
            $gte: NumberInt(700)
        }
    }, {
        likenum: {
            $lt: NumberInt(2000)
        }
    }]
})

-- OR查询
db.comment.find({
    $or: [{
        userid: "1003"
    }, {
        likenum: {
            $lt: 1000
        }
    }]
})

索引操作

  • 查看所有索引
-- 查看所有索引
db.comment.getIndexes()
  • 创建单列索引
-- 创建单列索引
db.comment.createIndex({userid:1})
  • 创建复合索引
-- 创建复合索引
db.comment.createIndex({userid:1,nickname:1})
  • 删除索引
-- 删除索引
-- 指定索引名
db.comment.dropIndex("userid_1_nickname_-1")
-- 指定索引规则
db.comment.dropIndex({userid:1,nickname:1})
  • 删除所有索引
-- 删除所有索引
db.comment.dropIndexes()
  • 查看索引使用执行计划
-- 执行计划explain
db.comment.find({userid:"1003"}).explain()
  • 索引涵盖(等同于数据库的覆盖索引)
    如果要查询的所有字段都是索引字段,查询完索引后会直接返回结果集

你可能感兴趣的:(mongodb入门)