MongoDB基本使用

Posted 阿门与阿前

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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}}}
    ])

 

 

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

以上是关于MongoDB基本使用的主要内容,如果未能解决你的问题,请参考以下文章

[MongoDB]Mongo基本使用

mongoDB 基本使用

MongoDB的「Linux」安装及基本使用

Mongodb数据库的安装部署及基本使用

python+mongodb+flask的基本使用

MongoDB数据库简介安装和基本使用