1.mongoDB的启动
        1.开启服务 sudo mongod
        2.开启客户端  mongo 
        db.createUser({user:"bbb",pwd:"123456",roles:[{role:"read",db:"test"}]})
2.数据库的操作:
        1. 查看所有的数据库         show dbs
        2. 切换数据库               use  xxx
        3. 查看数据库的集合(表)     show  collections
        4. 数据库的创建 有值自动创建
        5. 删除数据库              1.进入当前数据库  2. db.dropDatabase()
        6. 查看当前数据库           db
        7. 创建数据库fruit    1.use fruit  2.db.createCollection("apple") 
           在创建表applea的时候就会自动创建数据库fruit
3.集合(表)操作:
        1. 查看集合     show collections
        2. 创建集合     db.createCollection("xxx")
        3. 删除集合     db.xx.drop()

4.文档(行)的增删改:
        1.增加数据 db.xx.insert({key:value})
            db.stu.insert({_id:1,name:"隔壁老万",age:88,gender:false})
            
            data_dict = {
                name:"小明",
                age:12,
                gender:false
            }
            db.stu.insert(data_dict)

            db.stu.insert({_id:1,name:"王宝强",age:35,gender:false})
            db.stu.insert({_id:2,name:"陈羽凡",age:28,gender:false})
            db.stu.insert({_id:3,name:"贾乃亮",age:20,gender:false})

            db.stu.insert({_id:4,name:"马蓉",age:16,gender:true})
            db.stu.insert({_id:5,name:"白百何",age:18,gender:true})
            db.stu.insert({_id:6,name:"李小璐",age:28,gender:true})
            db.stu.insert({_id:7,name:"PGone",age:88,gender:true,like:"洗头发"})
            
        2. 删除数据:db.xx.remove(删除的条件)
             1.全部删除
                db.stu.remove({})
             2.根据条件删除: 默认是删除 所有符合条件的数据
                db.stu.remove({age:28})
             3. 只删除符合条件的第一个
                db.stu.remove({gender:true},{justOne:true})

        3.改 update: db.xx.update({查找的条件},{修改的内容}) 
            1. 修改内容: 默认其他原有字段删除了 替换掉原有数据
                db.stu.update({age:20},{name:"皮几万"})
                db.stu.update({name:"白百何"},{like:"小鲜肉"})

            2. 保持原有的字段 加一个修饰 $set: 默认 只修改第一个且对已存在的原有属性是替换,不存在的属性是添加
                db.stu.update({age:35},{$set:{like:"喝牛奶"}}) // 把like:"喝牛奶"添加到原数据里面 并不是替换
                db.stu.update({name:"李小璐"},{$set:{age:10}}) // 把原数据中的age:28替换为age:10
                db.stu.update({gender:false}, {$set:{age:66}})

            3. 修改所有符合条件的数据 multi   把所有满足条件的name换成"甜心"
                db.stu.update({gender:true}, {$set:{name:"甜心"}},{multi:true})
                //运行结果:
                // { "_id" : 4, "name" : "甜心", "age" : 16, "gender" : true }
                // { "_id" : 5, "name" : "甜心", "age" : 18, "gender" : true }
                // { "_id" : 6, "name" : "甜心", "age" : 28, "gender" : true }
                //  { "_id" : 7, "name" : "甜心", "age" : 88, "gender" : true, "like" : "洗头发" }
        4.save: 针对是 _id 整个替换掉原id中的数据
                db.stu.save({_id:7,name:"特朗普",age:"70",gender:false})
                // 结果:{ "_id" : 7, "name" : "特朗普", "age" : "70", "gender" : false }
                db.stu.save({_id:1,name:"马蓉"})
                // db.stu.save({name:"皮几万"}) 是错误写法 因为save()必须有_id
5.文档查询简单查询:
            1.基本查询 db.xx.find({查询条件})
                1.查询所有的数据 
                    db.stu.find()
                    db.stu.find({})
                2.默认查出 所有的符合条件的数据
                    db.stu.find({gender:true})

                3.查找符合条件的第一个
                    db.stu.findOne({gender:true})

                4. 格式化输出 pretty()
                    db.stu.find({age:28}).pretty()

            2.条件运算符 $lt< $gt> $lte<= $gte>= $ne!= 数字对比
                // 年龄 大于18岁的人
                db.stu.find({age:{$gt:18}})

                // 年龄 不b等于18的
                db.stu.find( {age: {$ne:18}})

            3.逻辑运算 $and $or 
                1.$and 默认的查询条件就是 且的关系
                    db.stu.find({age:28,gender:false})

                    $and:
                    db.stu.find({
                        $and:[
                            {age:28},
                            {gender:true}
                        ]
                    })
                2. $or 
                    // 年龄小于30或者 性别 男
                    db.stu.find({
                        $or:[
                            {age:{$lt:30}},
                            {gender:false}
                        ]
                    })
                3.混合使用 $and $or
                    // 年龄小于30必须性别 男, 或者年龄大于60
                    db.stu.find({
                        $or:[
                            {
                                $and:[
                                    {age:{$lt:30}},
                                    {gender:false}
                                ]
                            },
                            {age:{$gt:60}}
                        ]
                    })
                4.范围运算: $in $nin
                    // 年龄范围在 16,18,88
                    db.stu.find({
                        age:{$in:[16,18,88]}
                    })
                    db.stu.find({
                        name:{$nin:["贾乃亮"]}
                    })
                5.正则表达式:
                    1. /表达式/ 2.$regex:"表达式"
                    db.stu.find({
                        name:/凡/
                    })
                    {/*结果:{ "_id" : 2, "name" : "陈羽凡", "age" : 28, "gender" : false, "erzhan" : "piger" }*/}

                    db.stu.find({
                        name:{$regex:""}
                    })
                    忽略大小写 i
                    db.stu.find({
                        name:/pgone/i
                    })
                    db.stu.find({
                        name:{$regex:"pgone",$options:"i"}
                    })
                6.自定义函数 $where:带返回值的匿名函数
                    // 年龄大于18
                    db.stu.find({
                        $where:function () {
                            return this.age > 18
                        }
                    })

        查询结果的显示:
                    skip:跳过几个查看
                        db.stu.find().skip(2)
                    limit:允许查看几个
                        db.stu.find().limit(2)

                        db.stu.find().skip(2).limit(2)
                        db.stu.find().limit(2).skip(2)
                    sort: 升序 和降序 字段 1升序 -1降序
                        // 年龄排序
                        db.stu.find().sort({age:1})

                    投影: 你显示哪些字段, 字段:1, 默认:0
                        db.stu.find({gender:true},{age:1,name:1})
                        
                    去重: distinct(去重的字段,{查询条件})
                        db.stu.distinct("hometown", {age:{$lt:100}})
Demo

 

 

posted on 2018-04-15 19:06  Xiao马  阅读(2197)  评论(0编辑  收藏  举报