设为首页 收藏本站
查看: 862|回复: 0

[经验分享] Ruby操作MongoDB(进阶三)-集合collection

[复制链接]

尚未签到

发表于 2018-10-25 08:04:01 | 显示全部楼层 |阅读模式
  上篇文章主要介绍了Ruby操作MongoDB数据的四个基本操作,创建文档,读取文档,更新文档和删除文档的操纵方式,命令和参数的使用方式。本章我们继续Ruby操作MongoDB的进阶学习,集合Collection。
  与传统的关系型数据库不同,MongoDB数据库将文档存储在集合中。如果集合不存在,MongoDB数据将会在你第一次向集合中插入文档的时候创建这个集合。同样,你也可以通过多种诸如文档尺寸最大值和校验规则等可选参数显式地创建集合

  •   固定集合
  固定集合有最大尺寸或文档个数的限制,从而确保集合不会增长到超过集合的限制。所有的固定集合都需要设定最大尺寸和最大文档个数。如果集合达到了最大尺寸的限制,但是未达到最大文档个数的限制,MongoDB数据库会移除集合中的创建时间较早的文档。
  在设定字节大小时使用capped:true属性则创建了固定集合。
  client=Mongo::Client.new(['127.0.0.1:27017'],:database=>'film')
  client[:actors,capped:true,size:10000].create
  2.将一个已存在的集合转变为固定集合
  将一个已存在的非固定集合转变为固定集合,使用commond指令的convertToCapped参数。
  client=Mongo::Client.new(['127.0.0.1:27017'],:database=>'test')
  db=client.database
  db.commond({'convertToCapped'=>'contacts','size'=>8192})
  3. 文档检验
  如果你使用3.2及其之后的MongoDB版本,你就可以使用文档校验功能。拥有检验功能的集合在接受插入或更新集合中文档时会与特定的校验规则进行比较。如果插入或更新文档时没有通过校验功能,取决于校验层级validationLevel和校验步骤validationAction,MongoDB要么会返回一个警告,要么会拒绝文档的插入和更新。
  下面的实例创建了一个拥有校验器的contacts集合,在这个集合中进行插入和更新文档信息时,文档必须至少满足三个条件中的一个条件:
  phone字段为String类型
  email字段匹配了给定的正则表达式
  status状态字段要么是Unknown要么是Incomplete
  client=Mongo::Client.new(['127.0.0.1:27017'],:database=>'test')
  client[:actors,
  {
  'validator'=>{'$or'=>
  [
  {'phone'=>{'$type'=>"string"}},
  {'email'=>{'$regex'=>"/@mongodb\.com$/"}},
  {'status'=>{'$in'=>["Unknown","Incomplete"]}}
  ]
  }
  }
  ].create
  4. 现有集合增加校验功能
  通过commond指令的collMod属性实现对现有集合添加校验器的功能。下面的例子展示了怎样给contacts集合增加校验器,确保所有的文档都必须包含数字类型的age字段。
  client=Mongo::Client.new(['127.0.0.1:27017'],:database=>'test')
  db=client.database
  dn.commond({‘collMod’=>'contacts',
  'validator'=>{'age'=>{'$type'=>"number"}}
  })
  到此,MongoDB中集合的功能讲述完毕


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-626108-1-1.html 上篇帖子: Ruby操作MongoDB(进阶二)-CRUD操作 下篇帖子: Ruby操作MongoDB(进阶四)-投影Projection
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表