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}}}
    ])

 

 

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

posted @ 2018-11-16 00:18  麋鹿森林h  阅读(161)  评论(0编辑  收藏  举报