zoukankan      html  css  js  c++  java
  • MongoDB基本使用

     

    简单查询:查询过程中需要注意字段值的数据类型Boolean、String、DBRef....

      1.根据id查询:

        db.COLLECTION_NAME.find({_id:ObjectId("5bd80e1867f3337d4c2aac59")})

      2.根据字段查询:

        db.getCollection("qtfm__audio_info").find({_id:ObjectId("5bd80e1867f3337d4c2aac59"),code:"TT0000066_0001"})

     

        如果表字段的数据关联了其他的表,格式为DBRef的,查询的字段书写需要改变:

        db.getCollection("qtfm__audio_info").find({_id:ObjectId("5bd80e1867f3337d4c2aac59"),code:"TT0000066_0001",'album.$id':ObjectId('5bd56581db876943b4d0ec72')})

     

        boolean类型:

        db.getCollection("qtfm__audio_info").find({_id:ObjectId("5bd80e1867f3337d4c2aac59"),code:"TT0000066_0001",'album.$id':ObjectId('5bd56581db876943b4d0ec72'),deleted:true})

      

      3.条件操作符查询:

        大于($gt):Greater then, 值类型需要为int、double...

          db.qtfm__audio_info.find({playLength:{$gt:2}})

        

        小于($lt):Less than,值类型需要为int、double...

          db.qtfm__audio_info.find({playLength:{$lt:2}})

     

        大于等于($gte):Greater than equals

          db.qtfm__audio_info.find({playLength:{$gte:2}})

     

        不等于($ne):Not equals

          db.qtfm__audio_info.find({name:{$ne:'11'}})

     

        小于等于($lte):Less than equals

          db.getCollection("qtfm__audio_info").find({playLength:{$lte:22},code:"TT0000066_0001",'album.$id':ObjectId('5bd56581db876943b4d0ec72'),deleted:true})

     

        包含($in):

          db.qtfm__audio_info.find({name:{$in:["11",'12','13']}})

     

        不包含($nin):

          db.qtfm__audio_info.find({name:{$nin:["11",'12','13']}})

     

         或者($or):同一个字段,需要多个条件查询

          db.qtfm__audio_info.find({$or:[{name:'11'},{publishStatus:'Up'}],deleted:false})

     

         和($and):

          db.qtfm__audio_info.find( {

            $and : [
                { $or : [ { price : 0.99 }, { price : 1.99 } ] },
                { $or : [ { sale : true }, { qty : { $lt : 20 } } ] }
               ]
             } )

     

         存在($exist):可以用来判断某个字段是否存在,一般情况下,可以用来添加字段的时候来判断该字段是否存在

          db.qtfm__audio_info.find({name:{$ne:'11',$exists:false}}) //查询字段 name 存在,且值等于11

           

     

    插入

      插入单条数据:

        db.qtfm__audio_info.insert(
          {
              "_id" : ObjectId("5bd9d56832f7443f58b93e41"),
              "name" : "audio1",
              "album" : {
              "$ref" : "qtfm__album_info",
              "$id" : ObjectId("5bd3d1c832f7443f58b93e40")
            },
            "publishStatus" : "Up"
          })

     

      批量插入数据:Array类型的数据

        db.qtfm__audio_info.insert([

          {

            "_id" : ObjectId("5bd3d56832f7443f58b93e41"),
            "name" : "audio1",
            "album" : {
              "$ref" : "qtfm__album_info",
              "$id" : ObjectId("5bd3d1c832f7443f58b93e40")
            },
            "publishStatus" : "Up",

          },

          {
            "_id" : ObjectId("5bd85ab9edee1445ac240140"),
            "code" : "TT0000001_0001",
            "name" : "1",
            "album" : {
              "$ref" : "qtfm__album_info",
              "$id" : ObjectId("5bd3d1c832f7443f58b93e40")
            },
            "timeCreated" : NumberLong(1540905657271),
            "timeModified" : NumberLong(1540905657271),
            "deleted" : true,
            "_class" : "fm.qingting.common.data.model.AudioInfo",
            "publishStatus" : "Up"
          },

         ..........

        ])

     

     

    更新

      查询表中的字段是否存在,不存在就添加字段

        db.qtfm__audio_info.update(
          {'deleted_DDD':{$exists:false}},
          {$set:{'deleted_DDD':false}},
          false,
          true
        )

     

     

    分组

      

     

     

       条件: album.$id = 5bd3d1c832f7443f58b93e40

       分组字段: orderNum ,并且对orderNum 字段进行数量统计

        db.qtfm__audio_info.aggregate([
          {$match:{'album.$id':{$eq:ObjectId("5bd3d1c832f7443f58b93e40")}}},
          {$group:{'_id':'$orderNum',num_totoal:{$sum:1}}}
        ])

      

      

      

      条件: deleted = false

      分组字段: orderNum ,并且对orderNum 字段进行数量统计

        db.qtfm__audio_info.aggregate([
          {$match:{deleted:false}}},
          {$group:{'_id':'$orderNum',num_totoal:{$sum:1}}}
        ])

     

     

      以后遇到再更新。。。。。。

  • 相关阅读:
    c++ stl algorithm: std::find, std::find_if
    mysql---多表关联
    使用hadoop命令rcc生成Record 一个简单的方法来实现自己的定义writable对象
    Nexon由Xsolla全球支付服务
    configure.ac:20: error: Autoconf version 2.65 or higher is required
    的无线通信网络的学习LTE的关键技术HARQ(20141217)
    JAVA 公众微信的开放源码项目管理合作伙伴招募的版本号
    【工具】JAVA 在单元读取文件并比较
    linux下如何编译python生成libpython2.5.so动态库
    将主机IDS OSSEC日志文件存入MYSQL的方法
  • 原文地址:https://www.cnblogs.com/mysouler/p/9962196.html
Copyright © 2011-2022 走看看