• MongoDB


    MongoDB数据存储的格式是文档--json格式的文档
    三要素:数据库,集合,文档
    服务端mongod  客户端mongo

    show dbs
    use 数据库
    db
    db.createCollection('stu')
    show collections;
    db.stu.drop();  show collections; show dbs;





    添加文档数据库和集合不存在就会自动创建出来
    添加数据之前可以不创建集合只要添加数据了集合会自动创建出来
    插入
    db

    db.stu.insert({name:'gj',gender:1});
    db.stu.find();
    db.stu.insert({name:'hr',hometown:'桃花岛'});
    db.stu.find()
    db.stu.insert({_id:'201711',name:'dx'});
    db.stu.find();

    查询find()

    更新
    db.stu.update({gender:1},{name:'gj123'})-将整个文档发生了变化,而且只修改满足条件第一个文档
    db.stu.find()


    指定属性更改 $set

    db.stu.update({name:'hr'},{$set:{name:'hr123'}})只修改满足条件的第一个文档


    修改多条multi:true--多文档更新,对所有文档的跟新
    {}第一个参数{}表示所有数据
    db.stu.update({},{$set:{gender:1}})没有gender属性就添加只修改第一个文档,第一个文档有就修改没有就添加

    db.stu.update({gender:1},{$set:{gender:1}},{multi:true})

    save命令 id存在就修改不存在就增加

    删除
    db.stu.remove({})--删除文档  集合虽然为空但是还是存在的

    创建集合指定大小
    capped:true大小达到指定值会将最早的数据覆盖掉
    指定大小配合capped:true使用




    数据查询
    基本查询

    db.stu.find({age:{$gte:18}})



    db.stu.find({$or:[
        {age:{$gte:18}},
        {gender:false}

    ]})

    范围运算符
    db.stu.find({age:{$in:[18,28]}})


    正则表达式 js中的正则
    db.stu.find({name:/^黄/})

    自定义函数
    js函数必须返回一个true或false



    Limit
    db.stu.find().skip(3).limit(2)
    skip和limit不分先后顺序

    投影
    db.stu.find({},{})
    在结果中显示哪些属性--第二个参数
    第一个参数条件

    排序



    统计
    db.stu.count()

    消除重复

    db.stu.distinct({'hometown',{age:{$gt:18}}})



    聚合
    $project 投影 结果集中要哪些结果

    在调用aggregate不能掉之前哪些方法
    要做查询哪些方法就不能用聚合的方法

    一个做查询一个做聚合

    常用表达式
    $push将分组后某个属性的值放到一个数组中返回--不是有差异的数据
    aggregate方法接受的是一个数组,数组里接受的是json
    $sum:字段  --针对某个字段求和
    $sum:1  统计个数


    $unwind  将$push结果数组拆分成一行一行返回
    将文档中的数组值拆分成多行


    聚合采用管道的方式




    ==========================================
    db.dropDatabase() ---删除当前数据库

    将集合中的数据全部删除了集合和数据库还存在
    但是如果将数据库中的集合全部删除了那数据库就不存在了show dbs看不到了
    db.stu.insert({name:'gj',gender:1})
    db.stu.insert({name:'hr',hometown:'桃花岛'})
    db.stu.insert({_id:20170101,gender:1})
    db.stu.insert({name:'hr',gender:1})
    db.stu.update({gender:1},{name:'wg'})
    db.stu.update({name:'hr'},{$set:{name:'hr1111'}})
    db.stu.update({},{$set:{gender:2}})-条件为所有,没有gender这个字段会新增一个
    db.stu.remove({})
    db.stu.drop()
    db.stu.find()
    show collections
    db.createCollection('sub',{capped:true,size:10})-测试:增加5条数据,再增加就会把最旧的数据进行覆盖



    db.stu.drop()
    db.stu.insert({name:'郭靖',hometown:'蒙古',age:20,gender:true})
    db.stu.insert({name:'黄蓉',hometown:'桃花岛',age:18,gender:false})
    db.stu.insert({name:'华筝',hometown:'蒙古',age:18,gender:false})
    db.stu.insert({name:'黄药师',hometown:'桃花岛',age:40,gender:true})
    db.stu.insert({name:'段誉',hometown:'大理',age:16,gender:true})
    db.stu.insert({name:'段王爷',hometown:'大理',age:45,gender:true})
    show collections
    db.stu.find()
    db.stu.find({name:'郭靖'})
    db.stu.find({age:{$gte:30}})
    db.stu.find({age:{$gte:18},name:'郭靖'})
    db.stu.find({$or:[
            {age:{$gte:18}},
            {gender:false}
        ]})
    db.stu.find({age:{$in:[18,45]}})
    db.stu.find({age:{$nin:[18,45]}})
    db.stu.find({$or:[{age:18},{age:45}]})

    db.stu.find({name:/^黄/})
    db.stu.find({name:{$regex:'^黄'}})
    db.stu.find({$where:function(){return this.age>30;}})
    db.stu.find({age:{$gt:30}})

    db.stu.find().skip(3).limit(1)

    投影:
    #对于普通字段显示设置为1即可,不设置即为不显示,不显示不能设置0否则报错
    对于_id字段不设置是默认显示的所以如果不想显示需要设置为0
    db.stu.find({},{name:1,gender:1})
    db.stu.find({},{_id:0,name:1,gender:1})

    db.stu.find({},{_id:0,name:1,age:1}).sort({age:-1,name:1}) -1降序 1升序

    统计
    db.stu.count()
    db.stu.count({gender:false})
    去重
    db.stu.distinct('hometown',{age:{$gt:18}})

    db.stu.aggregate([
        {$group:{_id:'$gender',counter:{$sum:'$age'}}}
    ])

    db.stu.aggregate([
        {$group:{_id:'$gender',name:{$push:'$name'}}}
    ])

    db.stu.aggregate([
            {$group:{_id:'$gender',name:{$push:'$$ROOT'}}}
    ])


    db.stu.aggregate([
        {$match:{age:{$gt:20}}},
        {$group:{_id:'$gender',count:{$sum:1}}}

    ])



    db.stu.aggregate([
        {$group:{_id:'$gender',count:{$sum:1}}},
        {$project:{_id:0,count:1}}
        
    ])



    db.stu.aggregate([
        {$group:{_id:'$gender',count:{$sum:1}}},
        {$project:{_id:0,count:1}},
        {$sort:{count:-1}}

    ])


    db.stu.aggregate([
        {$group:{_id:'$gender',count:{$sum:1}}},
        {$project:{_id:0,count:1}},
        {$sort:{count:-1}},
        {$skip:1},
        {$limit:1}

    ])


    db.t2.insert({
            _id:1,item:'t_shirt',size:['S','M','L']
        })
        
    db.t2.find()



    db.t2.aggregate([
        {$unwind:'$size'}

    ])




    新建t3集合
    db.t3.insert([
    { "_id" : 1, "item" : "a", "size": [ "S", "M", "L"] },
    { "_id" : 2, "item" : "b", "size" : [ ] },
    { "_id" : 3, "item" : "c", "size": "M" },
    { "_id" : 4, "item" : "d" },
    { "_id" : 5, "item" : "e", "size" : null }
    ])

    db.t3.find()


    db.t3.aggregate([
        {$unwind:'$size'}
    ])


    db.t3.aggregate([
        {$unwind:{
            path:'$size',
            preserveNullAndEmptyArrays:true
            }}
        
    ])


    find({$where:function(){return this.age>=18 && this.age<=45;}})

    db.stu.aggregate([
        {$group:{_id:'$gender',counter:{$sum:'$age'}}}
    ])

    在文档中结构中必须要有_id








  • 相关阅读:
    20191211 HNOI2017 模拟赛 问题A
    20191211 HNOI2017模拟赛 C题
    BZOJ 3681 Arietta
    netcore3.1中的Json操作
    netcore2.2出现的新特性HealthCheck
    MVC为什么要使用TagHelper?
    psql备份csv文件
    DataAnnotations的使用及细节处理
    记录一次mac安装node遇到的错误
    记录一次netcore3.0 code first使用迁移命令报错问题
  • 原文地址:https://www.cnblogs.com/wgDream/p/6883615.html
Copyright © 2020-2023  润新知