MongoDB第二篇

MongoDB第二篇

数据处理函数

    db.collection.distinct(field)
    功能 : 获取集合中某个域取值范围
  
       e.g.   查看class0中age域的取值范围
              db.class0.distinct('age')

    pretty()
    功能 : 将find查找结果格式化显示

    limit(n)
    功能:限制显示前n条文档
    
        e.g.  显示查找结果前三条文档
             db.class0.find({},{_id:0}).limit(3)

    skip(n)
    功能 : 跳过前n条文档,显示后面的文档内容

        e.g. 跳过查找结果前3条文档,显示后面内容
             db.class0.find({},{_id:0}).skip(3)

    count()
    功能:对查找结果计数统计

   e.g.统计年龄等于17的文档(使用count query参数要写筛选条件)
       db.class0.find({age:17},{_id:0}).count()

    sort({field:1/-1})
    功能:对查找结果按照指定的域排序显示
  
     e.g. 按照年龄对查找结果升序排序(1 表示升序,-1表示降序)
         db.class0.find({},{_id:0}).sort({age:1})
   
    * 复合排序 : 对多个域进行排序,当第一排序项相同时,参考第二排序项排序,依次类推。

       e.g. 当年龄相同时按照姓名升序排序
            db.class0.find({},{_id:0}).sort({age:1,name:1})


    函数可以连续调用
       * 当一个函数的返回结果仍然是文档集合,可以继续调用函数    
       e.g. 查找年龄最大的三位同学文档信息
            db.class0.find({},{_id:0}).sort({age:-1}).limit(3)

       * 对筛选的文档集合,可以使用索引序号取某一项

       e.g. 通过序列号 1 取到删选结果的第二项
            db.class0.find({},{_id:0})[1]

删除文档

    db.collection_name.deleteOne(query)			#删除一条文档
    db.collection_name.deleteMany(query)		#删除多条文档
    
    db.collection_name.remove(query,justOne)	
    功能:删除文档
    参数:query   查询条件  
    justOne  默认为false此时remove用法同deleteMany
    如果为true 此时remove用法同deleteOne

    db.collection.findOneAndDelete(query)  有返回值  显示查找的内容
    功能 : 查找某个文档并删除
    参数 : query
    返回 : 显示查找到的文档 

        e.g. 查找不存在sex域的文档并删除
        db.class0.findOneAndDelete({sex:{$exists:false}})

更新文档

    db.collection_name.updateOne(query,update,upsert)
    功能 : 修改第一个符合条件的文档
    参数 : query   筛选条件  用法同find
           update  要修改的数据项,需要和修改操作符一同使用
           upsert  bool值 默认为false表示如果query没有筛选到文档,则不做任何操作
                   如果设置为true则如果没有筛选到文档会根据query update插入新的文档
           
        	e.g. 将年龄17的第一个文档修改为年龄18
            db.class0.updateOne({age:17},{$set:{age:18}})

        	e.g. 如果query内容不存在则会插入新文档 
            db.class0.updateOne({name:'Jame'},{$set{age:18}},{upsert:true})
            
	db.collection_name.updateMany(query,update,upsert)
    功能:修改所有符合条件文档
    参数: 参数用法同updateOne
    
    e.g. 将年龄为17的所有文档修改为年龄20
    db.class0.updateMany({age:17},{$set:{age:20}})
    
    db.collection_name.update(query,update,upsert,multi)
    功能:修改筛选文档
    参数:query   筛选条件
         update  修改内容
         upsert  如果为true则如果query文档不存在可以插入新的文档
         multi   默认为false 表示只能修改一条文档
         设置为true 表示可以修改多条文档
            
     e.g. 修改所有不存在sex域的文档年龄为20
     db.class0.update({sex:{$exists:false}},{$set:{age:20}},false,true)

	db.collection_name.findOneAndUpdate(query,update)
    功能 : 查找一个文档并修改
    参数 : query 查找条件
    	   update 修改内容
    返回 : 修改前的文档内容

    e.g. 查找一个文档并修改年龄为17
    db.class0.findOneAndUpdate({name:'Jame'},{$set:{age:17}})

    db.collection_name.findOneAndReplace(query,docuemnt)
    功能: 查找并替换一个文档
    参数: query  查找条件
          document 要替换的文档
    返回:返回原有文档内容

    e.g. 用新的文档替换查找到的文档
    db.class0.findOneAndReplace({abc:123},{name:'Lily',age:19})

update 修改器的使用

db.collection.update(query,update,upsert,multi)

$set  : 修改一个域的值,或者增加一个域

    e.g.  当一个域不存在时可以增加一个域
          db.class0.update({name:'Jame'},{$set:{sex:'m'}})


$unset : 删除一个域

    e.g.  删除一个文档sex域
          db.class0.update({name:'Tom'},{$unset:{sex:''}})

$rename : 修改一个域的域名

    e.g.  修改sex域名为gender
          db.class0.updateMany({},{$rename:{sex:'gender'}})


$setOnInsert : 当update插入文档时,作为补充插入内容

    e.g. : 插入新的文档时,gender:'w' 也会作为文档的域
          db.class0.update({name:'Lucy'},{$set:{age:20},$setOnInsert:{gender:'w'}},true)


$inc : 加法修改器

    e.g.  所有人的age域值加1
          db.class0.updateMany({},{$inc:{age:1}})


$mul :  乘法修改器
    
    e.g.  将所有age域的值 乘以 0.5
          db.class0.updateMany({},{$mul:{age:0.5}})
 
* $inc  $mul 值可以是整数 小数,正数 负数


$max : 指定某个域的值如果小于规定值则改为规定值,大于规定值则不变

    e.g. 如果Alex  age小于18则改为18,大于18则不变
          db.class0.update({name:'Alex'},{$max:{age:18}})

$min : 指定某个域的值如果大于规定值则改为规定值,小于规定值则不变

    e.g.  如果lily age 大于20则改为20 小于20则不变
          db.class0.update({name:'Lily'},{$min:{age:20}})


数组修改器

$push  : 向数组中添加一项

    e.g.  向score数组中增加5
         db.class3.update({name:'小明'},{$push:{score:5}})


$pushAll : 向数组中增加多项

    e.g. 向数组中添加多项内容 
         db.class3.update({name:'小红'},{$pushAll:{score:[10,5]}})


$pull : 从数组中删除某一个值(如果有重复值则都删除)

    e.g. 删除score中所有的 5
         db.class3.update({name:'小红'},{$pull:{score:5}})


$pullAll : 同时删除数组中多个值


    e.g. 同时删除score中多个值
         db.class3.update({name:'小红'},{$pullAll:{score:[82,10]}})


$pop  : 弹出数组一项
    
      e.g. 从数组中弹出一项 1表示最后一项 -1表示第一项
          db.class3.update({name:'小亮'},{$pop:{score:-1}})


$addToSet  : 向数组中添加一项,但是不能添加数组中已有数值

      e.g. 如果score中没有88则添加,如果有则添加不上
          db.class3.update({name:'小红'},{$addToSet:{score:88}})


$each :  对多个值进行逐一操作

      e.g. 利用each同时添加90  10到数组
          db.class3.update({name:'小明'},{$push:{score:{$each:[90,10]}}})

$position :指定位置插入数值 搭配each使用

      e.g.91插入到数组的1号位置
          db.class3.update({name:'小红'},{$push:{score:{$each:[91],$position:1}}})

$sort : 对数组进行排序 搭配each使用

      e.g. 对数组进行升序排序
          db.class3.update({name:'小亮'},{$push:{score:{$each:[],$sort:1}}})

猜你喜欢

转载自blog.csdn.net/weixin_43278089/article/details/88385471