mongodb笔记

103 篇文章 0 订阅
5 篇文章 0 订阅

安装mongodb

官网下载安装包

启动mongodb

// 配置环境变量

// 启动mongodb(配置环境变量后可以直接在cmd输入mongo命令启动mongodb)
// mongod.exe --dbpath F:\mongodb\data / (data数据存放的位置)

// 与mongodb建立连接
新cmd窗口输入 mongo 命令

mongodb基本命令

//查看当前数据库列表
shou dbs
//查看当前操作的数据库
db
//切换到指定的数据库,如果没有会新建数据库
use 数据库名称
//显示当前数据库的所有集合(表)
show collections

//切换到表
use 表名称
//查询表的数据 (在数据库下面查就可以)
db.表名.find()
// 查询指定数据
db.表名.find({
    "age": "13"
})
//删除当前数据库
db.dropDatabase();
//删除集合,删除指定的集合  删除表 
db.表名.drop()

查看全部数据库

shou dbs

切换到指定的数据库,如果没有会新建数据库

use 数据库名

查看当前操作的数据库

db

显示当前数据库的所有集合(表)

show collections

删除当前数据库

db.dropDatabase();

切换到表

use 表名称

删除集合,删除指定的集合 删除表

db.表名.drop()

创建表 / 增加数据

//创建表 / 新增数据
db.表名.insert({
    "name": "xiaoming"
});

// 添加多条数据
db.表名.insert([{
    "id": "1",
    "name": "小红"
}, {
    "id": "2",
    "name": "小明"
}, {
    "id": "3",
    "name": "小刚"
}, {
    "id": "4",
    "name": "小亮"
}]);

  • 查询全部
db.表名.find() // 查询全部数据
db.表名.find().count() // 返回数据条数
  • 指定查询
db.表名.find({
    "name": "shuaizi"
})

// 大于
db.表名.find({
    age: {
        $gt: 22
    }
})
// 小于
db.表名.find({
    age: {
        $lt: 22
    }
})
// 大于大于
db.表名.find({
    age: {
        $gte: 22
    }
})
// 小于等于
db.表名.find {
    age: {
        $lte: 22
    }
}

// 并且
db.表名.find(({
    age: {
        $gte: 18,
        $lte: 30
    }
}))

// 包含
db.表名.find(({
    age: /包含/
}))

// 包含以什么开头
db.表名.find(({
    age: /^包含/
}))

// 包含以什么结尾
db.表名.find(({
    age: /包含$/
}))
  • 指定列查询
// 指定列查询
/* 
{}        条件
{name:1}  显示什么
 */
db.表名.find(({}, {
    age: 1, // 显示age
    name: 1 // 显示name
}))
  • 分页查询
// 查询5条以前的数据
db.表名.find().limit(5)

// 查询10条以后的数据
db.表名.find().skip(10)

// 查询多少条以前和多少条以后的数据
db.表名.find().limit(10).skip(5)

// 分页思路
limit((page - 1) * 数量)
skip(数量)
  • 排序
// 升序
db.user.find().sort({
    age: 1
})

// 降序
db.user.find().sort({
    age: -1
})
  • or 或
db.表名.find({
    $or: [{
        age: 12
    }, {
        age: 20
    }]
})
  • 只查询第一条数据
db.表名.findOne()

修改数据

  • 修改单条数据
// 参数一条件 
// 参数二新数据
db.表名.update({
    name: '帅子'
}, {
    $set: {
        name: '帅子'
    }
})
  • 批量修改
db.表名.update({
    name: '帅子'
}, {
    $set: {
        name: '帅子'
    }
}, {
    multi: true
})

删除数据

  • 删除符合逻辑的数据
// {} 删除全部数据
db.表名.remove({
    age: 21
})
  • 删除单条数据
db.表名.remove({
    age: 21
}, {
    justOne: true
})

索引

  • 创建索引
db.表名.ensurelndex({
    "列名": 1
})
// 1 正序 -1降序
  • 获取集合索引
db.表名.getIndexes({})
  • 删除索引
db.表名.dropIndex({
    "列名": 1
})

复合索引

db.表名.ensurelndex({
    "列名1": 1,
    "列名2": 1
})

唯一索引

db.表名.ensurelndex({
    "列名1": 1
}, {
    'unique': true
})

mongodb聚合管道 / 连表查询|数据统计

  • $project / 查询想显示的列 (筛选)
db.表名.aggregate([{
    $project: {
        "列名1": 1,
        "列名2": 1
    }
}])
  • $match / 条件(过滤)
db.表名.aggregate([{
    $project: {
        "列名1": 1,
        "列名2": 1
    },
    $match: {
        age: {
            $get: 30
        }
    }
}])
  • $group / 分组
db.表名.aggregate([{
    $group: {
        _id: "列名",
        total: {
            $sum: "$列名"
        }
    },
}])
  • $sort 排序
db.表名.aggregate([{
    $project: {
        "列名1": 1,
        "列名2": 1
    },
    $match: {
        '列名': {
            $get: 30
        }
    },
    $sort: {
        '列名': 1
    }
}])
// 1 正 -1倒
  • $limit 限制返回的数据
db.表名.aggregate([{
    $project: {
        "列名1": 1,
        "列名2": 1
    },
    $match: {
        '列名': {
            $get: 30
        }
    },
    $sort: {
        '列名': 1
    },
    $limit: 10
}])
  • $skip 跳过多少条数据
db.表名.aggregate([{
    $project: {
        "列名1": 1,
        "列名2": 1
    },
    $match: {
        '列名': {
            $get: 30
        }
    },
    $sort: {
        '列名': 1
    },
    $skip: 10
}])
  • lookup 表关联查询
db.表名.aggregate([{
    // 表关联
    $lookup {
        from: '被关联的表',
        localField: '主表要挂关联的字段',
        foreignField: '被关联表的字段',
        as: '关联后存放的字段'
    },
    {
        // 条件
    }
}])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值