MongoDB使用文档

创建并使用personDb数据库

use personDb


连接数据库

// 远程

mongo 192.168.1.1:7080

// 本地

mongo


显示数据库

show dbs


删除数据库

db.dropDatabase()


显示表

show collections


删除表

db.user.drop()


新增数据

// 新增单条数据

db.user.insert({

        name: "jack",

        age: 23,

        sex: "男"

})

db.info.insert({

        eCard: "320123456",

        phone:  "14725836978",

        address: "china"

}) 

// 新增多条数据

for(var i=0;i<100;i++){
        db.user.insert({
                name: 'jack' + i,
                age: i,

                sex: "男"
        })
}

删除数据

// 删除名字是Jack的

db.user.remove({

        name: "jack"

})

// 删除年龄大于22的

db.user.remove({

        age: {$gt: 22}

})

// 只删除多个数据中的一条

db.user.remove({
        name: "jack"
},{
        justOne: true
})


查找数据

// 查全部

db.user.find()

// 查名字是jack,sex是男

db.user.find({

        name: "jack",

        sex: "男"

})

// 大于20

db.user.find({

        age: {$gt: 20}

})

 // 大于等于20

db.user.find({

        age: {$gte: 20}

})

// 小于20

db.user.find({

        age: {$lt: 20}

})

// 小于等于

db.user.find({

        age: {$lte: 20}

})

// 大于等于10并且小于等于20

db.user.find({

        age: {$gte: 20, $lte: 10}

})

// 模糊查询(包含)

// 匹配jack

db.user.find({

        name: /jack/        

})

// 匹配以j开头

db.user.find({

        name: /^j/        

})

// 匹配以k结尾

db.user.find({

        name: /k$/        

})

// age小于等于10且只查name,age字段

db.user.find({

        age: {$lte: 10}

},{

        name: 1,

        age: 1       

})

// 年龄升序排序

db.user.find().sort({

        age: 1

})

// 年龄降序排序

db.user.find().sort({

        age: -1

})

// 查询前5条数据

db.user.find().limit(5)

// 查询10条以后的数据

db.user.find().skip(10)

// 查询10条之后的数据中前五条数据

db.user.find().skip(10).limit(5)

 // 实际应用--------分页

db.user.find().skip((page - 1) * pageSize).limit(pageSize)

// 统计表中数据量

db.user.find().count()

// or------- 查name为jack或者age大于10的数据

db.user.find({

        $or: [{

                        name: "jack"

                },{

                        age: { $gt: 10}

                }]

})


聚合管道

// 用于表关联查询和数据统计

db.user.aggregate([

        {

                // $project: 指定查出的字段 (增加  删除  重命名字段)

                $project: {

                        name: 1

                }

        },

        {

                // $match: 条件匹配,相当于where

                $match: {

                        age: {$gt: 10}

                }

        },

        {

                // $limit: 限制数量

                $limit: 1

        },

        {

                // $skip: 跳过数量

                $skip: 3

        },

        {

                // $sort: 条件排序

                $sort: {

                        name: -1

                }

        },

        {

                // $group: 分组统计

                $group: {
                      id: "$sex",        // 以xxx进行分组
                      total: {$sum: "$age"}        // 以xxx进行统计
                }

        },

        {

                // $lookup: 引入其他集合的数据(表关联查询)

                $lookup: {
                        from: "info",         // 和什么表关联
                        localField: "phone",         // 表一关联字段
                        foreignField: "phone",          // 表二关联字段
                        as: 'phones'         // 重命名
                }

        }

])

// 查询年龄大于5,第十条之后的5条数据,按年龄降序排序,显示name和sex字段

db.user.aggregate([

        {$project:{name: 1, sex: 1}},

        {$match: {age: {$gt:5}}},

        {$sort: {age: -1}},

        {$skip: 3},

        {$limit: 2},

])

// 连表查询

db.user.aggregate([
        {
                $lookup: {
                        from: "info",
                        localField: "phone",
                        foreignField: "phone",
                        as: 'items'
                }
        }
])


修改数据

// 修改name为jack的数据为mike

db.user.update({

        name: "jack"

}, {

        $set: {

                name: "mike"

        }

})

// 给name为jack,年龄23的数据新增一个字段

db.user.update({

        name: "jack",

        age: 23

},{

        $set: {

                chinaName: "杰克"

        }

})

// 修改name为jack,年龄23数据的sex和age字段

db.user.update({

        name: "jack",

        age: 23

},{

        $set: {

                sex: "女",

                age: 10

        }

})

// 修改name为jack的全部数据为mike

db.user.update({

        name: "jack"

}, {

        $set: {

                name: "mike"

        }

},{

        multi: true

})


索引

// 获取当前表的索引

db.user.getIndexes()

// 创建索引

db.user.ensureIndex({

        name: 1

})

// 删除索引

db.user.dropIndex({

        name: 1

})

// 复合索引

// 复合索引必须全部匹配或者第一个匹配才能命中索引,第二个就不能命中

db.user.ensureIndex({

        name: 1,

        age: 1

},{

        name: "name&age"        // 重命名

})

// 唯一索引

db.user.ensureIndex({
        age: 1
},{
        'unique': true        //添加唯一索引后,索引字段相同的数据无法添加
})


db.user.insert({        // 因为不存在改数据,可以添加
        name: 'lucy',
        age: 10
})
db.user.insert({        // 因为已存在改数据,无法添加,报错
        name: 'lucy',
        age: 10
})


权限管理

// 创建超级管理员

切换到personDB数据库:use personDB

db.createUser({

        user: "admin",

        pwd: "123456",

        roles: [{

                role: "root",

                db: "personDB"

        }]

})

// 创建管理员

 db.createUser({
        user: "Mike",
        pwd: "123456",
        roles: [{
                role: "dbOwner",
                db: "personDB"
        }]
})

// 查看可以访问数据库的用户

show users

// 删除可以访问数据库的用户

db.dropUser("admin")

// 更新密码

db.updateUser( "admin", { pwd: '456789' })

// 权限认证

db.auth("admin","123456")

// 在配置文件中开启权限

文件:MongoDB\Server\4.0\bin\mongod.cfg
开启:security: authorization: enabled

// 重启数据库后就必须账号登录

mongo 数据库名 -u 用户名 -p 密码
mongo 192.168.1.1:7080/数据库名 -u 用户名 -p 密码


备份和还原

// 备份

mongodump -h 127.0.0.1 -d personDB -o 导出路径

// 还原

mongorestor -h 127.0.0.1 -d personDB 当前路径

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值