MongoDB学习

查看数据库列表   show dbs

创建数据库mydb   use mydb 

查看当前选择的数据库   db  

插入数据   db.movie.insert({"name":"tutorialsyiibai"})  

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

创建mycollection集合 格式:db.createCollection(name,options)

           db.createCollection(“mycollection”) 不带选项

           可选选项:

选项

类型

描述

capped 

Boolean

如果为true,则启用封顶集合。封顶集合是固定大小的集合,会自动覆盖最早的条目,当它达到其最大大小。如果指定true,则需要也指定尺寸参数。

autoIndexID

Boolean

如果为true,自动创建索引_id字段的默认值是false

size

number

指定最大大小字节封顶集合。如果封顶如果是 true,那么你还需要指定这个字段。

max

number

指定封顶集合允许在文件的最大数量。

          

          db.createCollection("mycol", { capped : true, autoIndexID :true, size : 6142800, max : 10000 } )带参数集合


查看集合   show collections

删除集合: db.mycol.drop()

插入文档  如果该数据库中不存在col集合,则自动创建集合并插入文档

db.col.insert({title:'MongoDB 学习',

     description: 'MongoDB 是一个 Nosql数据库',

     tags: ['mongodb', 'database', 'NoSQL'],

    likes: 100

})

更新文档

Update方法格式

 
      db.collection.update(
           <query>,    update的查询条件,类似sql update查询内where后面的。
           <update>,
                  update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
        {
           upsert: <boolean>,
                   可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
           multi: <boolean>,
                   可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
           writeConcern: <document>
            可选,抛出异常的级别。
          }
        )
“$set”  
    向文档中添加或更新字段
     db.col.update({'title':'MongoDB 学习'},{$set:{'title':'MongoDB' ,"by":"菜鸟教"}})  
       把标题更新并添加by字段
     db.col.update({"score":96},{"$set":{"title":"PHP 学习","by":"菜鸟教程","likes":50,"tags":["PHP","MongoDB","Java"]}}) 类上
“$unset”  
    从文档中移除指定的字段
   db.col.update({"title":"PHP教程"},{"$unset":{"likes":1}})
      从文档中移除likes字段
“$inc” 
    用来增加已有键的值,或者在键不存在时创建一个键。$inc就是专门来增加(和减少)数字的。"$inc"只能用于整数、长整数或双精度浮点数。要是用在其他类型的数据上就会导致操作失败。
   db.col.update({"title":"PHP 教程"},{"$inc":{"pageviews":1}})
“$rename”
    重命名字段、也可以将子文档中键值移到其他子文档中。
     db.col.update({"title":"PHP 学习教程"},{"$rename":{"pageviews":"pageview"}})
   pageviews字段重命名为pageview
"$setOnInsert"  
 update方法使用upsert选项upsert: true执行insert操作时,$setOnInsert操作符给相应的字段赋值。若update方法执行的update操作而不是insert操作,那么$setOnInsert操作符将无效。
 
数组更新操作操作符-----只能用在键值为数组的键上的数组操作。
$ (query)

·        定位操作符("$")作为第一个匹配查询条件的元素的占位符,也就是在数组中的索引值。

·        数组字段必须出现查询文档中。

"$push"
    如果指定的键已经存在,会向已有的数组末尾加入一个元素,要是没有就会创建一个新的数组。

db.table.update({"sno":1},{$push:{"comments":{"name":"apple","content":"thank!"}}})

db.table.update({"sno":1},{"$push":{"courses":"历史"}})

"$pull"
   操作符移除指定字段值为数组,且匹配$pull语句声明的查询条件的所有元素。
db.table.update({"sno":1},{"$pull":{"courses":""}})
              移除courses数组中所有历史元素
     db.profiles.update( { votes: 3 }, { $pull: { votes: { $gt: 6 } } } );
   移除votes数组中所有大于6的元素
"$pushAll"
  用法同$push一样,只是$pushAll可以一次追加多个值到一个数组字段内。

db.table.update({"sno":1},{"$pushAll":{"courses":["历史","历史"]}})

"$pop"
   删除数组内第一个值:{$pop:{ "courses":-1}}、删除数组内最后一个值:{$pop:{ "courses":1}}
  db.table.update({"sno":1},{"$pop":{"courses":1}})

"$addToSet"

加一个值到数组内,而且只有当这个值在数组中不存在时才增加。

db.table.update({"sno":1},{"$addToSet":{"cousers":"语文"}})

save方法 格式 db.collection.save(obj)

obj代表需要更新的对象,如果集合内部已经存在一个和obj相同的"_id"的记录,Mongodb会把obj对象替换集合内已存在的记录,如果不存在,则会插入obj对象。

     db.collection.save(
        <document>,    文档数据。
       {
         writeConcern: <document>   可选,抛出异常的级别。
       }
      )
    

db.table.save({"name":"王五","age":25,"sex":"","score":99,"sno":3,"num":1,"course":["政治","地理","历史"]})

删除文档格式

    db.collection.remove(
       <query>,  (可选)删除的文档的条件。
      {
         justOne: <boolean>,   (可选)如果设为 true 或 1,则只删除一个文档。
         writeConcern: <document>  (可选)抛出异常的级别。
      }
    )

    db.col.remove({'title':'MongoDB学习'},{justOne:1})只删除一个标题为MongoDB学习的文档。

    db.col.remove({})   删除所有的数据


查询文档

db.col.find().pretty()  查询所有文档

db.col.find({"likes":{$gte:50}}).pretty()查询likes大于等于50的文档

db.col.find({"likes ":100,"title":"MongoDB 学习"}).pretty()

         查询likes100并且titleMongoDB学习的文档

db.col.find({$or:[ {"likes":100},{"title": "MongoDB学习"}]}).pretty()

         查询likes100titleMongoDB学习的文档

db.col.find({},{"title":1,_id:0,”likes”:1})

          查询只显示titlelikes字段


$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。

  Double:1 String:2 Object:3 Array:4 Binarydata:5 Object id:7

 Boolean:8 Date:9 Null:10 Regular Expression:11 JavaScript:13

  32-bitinterger:16 Timestamp:17 64-bit interger:18 Min key:255 Max key:127



limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数

    db.col.find().limit(2).pretty()   显示前两条记录

 

skip()方法来跳过指定数量的数据,skip方法接受一个数字参数作为跳过的记录条数。

    db.col.find({},{"title":1,_id:0}).limit(1).skip(1) 只显示第二条记录的title字段

 

sort()方法可以通过参数指定排序的字段,并使用 1 -1来指定排序的方式,其中1为升序排列,而-1是用于降序排列。默认升序排列。

      db.col.find({},{"title":1,_id:0,”likes”:1}).sort({"likes":-1}) likes降序排序


索引

  ensureIndex()方法创建索引。(可接受的一些参数未列出)

        db.col.ensureIndex({"title":1,"description":-1}) 1为指定按升序创建索引,-1为降序。

        db.values.ensureIndex({"title":1,"description":-1},{background: true}) 

              加了参数background以后台方式创建索引


聚合----主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果

 聚合框架中的常用操作:

$project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。

$match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。

$limit:用来限制MongoDB聚合管道返回的文档数。

$skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。

$unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。

$group:将集合中的文档分组,可用于统计结果。

$sort:将输入文档排序后输出。

$geoNear:输出接近某一地理位置的有序文档。

           db.mycol.aggregate( [

                        { $match : { score : {$gt : 70, $lte : 90 } } },

                        { $group: { _id: null,count: { $sum: 1 } } }

             ] );

                 $match用于获取分数大于70小于或等于90记录,然后将符合条件的记录送到下一阶段$group管道操作符进行处理。


聚合的方法使用aggregate()

db.mycol.aggregate([{$group : {_id : "$by_user",num_tutorial : {$sum : 1}}}])

       通过字段by_user字段对数据进行分组,并计算by_user字段相同值的总和

db.mycol.aggregate([{$group : {_id :"$by_user", num_tutorial : {$sum : "$likes"}}}])

       通过字段by_user字段对数据进行分组,并计算likes字段的总和

  $avg 计算平均值$min获得最小值 $max获得最大值

  $push在结果文档中插入值到一个数组中,$addToSet在结果文档中插入值到一个数组中,但不创建副本

   $first根据文档的排序获取第一个文档数据,$last根据文档的排序获取最后一个文档数据




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值