zoukankan      html  css  js  c++  java
  • MongoDB 快速入门--高级

    引用

    --------->DBRefs

    DBRef的形式:

    { $ref : , $id : , $db :  }
    • $ref:集合名称
    • $id:引用的id
    • $db:数据库名称,可选参数
    {
       "_id":ObjectId("53402597d852426020000002"),
       "address": {
       "$ref": "address_home",
       "$id": ObjectId("534009e4d852427820000002"),
       "$db": "w3cschoolcc"},
       "contact": "987654321",
       "dob": "01-01-1991",
       "name": "Tom Benzamin"
    }

    MongoDB 原子操作

    $set

    用来指定一个键并更新键值,若键不存在并创建。

    { $set : { field : value } }

    $unset

    用来删除一个键。

    { $unset : { field : 1} }

    $inc

    $inc可以对文档的某个值为数字型(只能为满足要求的数字)的键进行增减的操作。

    { $inc : { field : value } }

    $push

    { $push : { field : value } }

    把value追加到field里面去,field一定要是数组类型才行,如果field不存在,会新增一个数组类型加进去。

    $pushAll

    同$push,只是一次可以追加多个值到一个数组字段内。

    { $pushAll : { field : value_array } }

    $pull

    从数组field内删除一个等于value值。

    { $pull : { field : _value } }

    $addToSet

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

    $pop

    删除数组的第一个或最后一个元素

    { $pop : { field : 1 } }

    $rename

    修改字段名称

    { $rename : { old_field_name : new_field_name } }

    $bit

    位操作,integer类型

    {$bit : { field : {and : 5}}}

    ObjectId

    正则表达式

    考虑以下 posts 集合的文档结构,该文档包含了文章内容和标签:

    {
       "post_text": "enjoy the mongodb articles on tutorialspoint",
       "tags": [
          "mongodb",
          "tutorialspoint"
       ]
    }

    使用正则表达式

    以下命令使用正则表达式查找包含 w3cschool.cc 字符串的文章:

    >db.posts.find({post_text:{$regex:"w3cschool.cc"}})
    >db.posts.find({post_text:{$regex:"w3cschool.cc",$options:"$i"}})//区分大小写
    var name=eval("/" + 变量值key +"/i"); //如果要使用变量就必须用eval

    GridFS

    GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片、音频、视频等)。

    GridFS 用两个集合来存储一个文件:fs.filesfs.chunks

    >mongofiles.exe -d gridfs[数据库名称] put song.mp3

    固定集合(Capped Collections)

     顾名思义就是说这个集合的大小是固定的,可以在创建集合的时候通过size来指定大小

    我们通过createCollection来创建一个固定集合,且capped选项设置为true:

    >db.createCollection("cappedLogCollection",{capped:true,size:10000})

    还可以指定文档个数,加上max:1000属性:

    >db.createCollection("cappedLogCollection",{capped:true,size:10000,max:1000})

    判断集合是否为固定集合:

    >db.cappedLogCollection.isCapped()

    如果需要将已存在的集合转换为固定集合可以使用以下命令:

    >db.runCommand({"convertToCapped":"posts",size:10000})

    以上代码将我们已存在的 posts 集合转换为固定集合。

    Hold on, everything is possible.
  • 相关阅读:
    Java知识之运算符篇
    对List取交集、联集及差集
    SQL in与exists的执行效率比较
    SQLServer数据集合的交、并、差三种集合运算
    获取外网IP
    SQL语句优化技术分析
    高并发下的获取ID解决方案
    获取数据库里面所有自增类型的最大值
    锁的概述
    项目管理心得:一个项目经理的个人体会、经验总结(转)
  • 原文地址:https://www.cnblogs.com/student-note/p/6194343.html
Copyright © 2011-2022 走看看