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

[经验分享] mongo db backup 1

[复制链接]

尚未签到

发表于 2015-11-11 10:23:39 | 显示全部楼层 |阅读模式
  这个系列主要作mongodb的备忘.
  之前在其他地方写的东西也慢慢迁移过来. 这些内容基本上就是从官网文档开始扩展.
  

  这一篇主要记录mongo的update.
  

  首先有若干的operator, update的operator有:
  $inc: 就是加了
  db.products.update( { sku: "abc123" },   { $inc: { quantity: 5 } } )
  

  $mul:就是乘
  db.products.update(      { _id: 1 },       { $mul: { price: 1.25 } }  )

  

  $rename
  db.students.update( { _id: 1 }, { $rename: { 'nickname': 'alias', 'cell': 'mobile' } } )

  

  $setOnInsert 发生在upsert发生insert时
  db.products.update(
  { _id: 1 },
  { $setOnInsert: { defaultQty: 100 } },
  { upsert: true }
)
  

  $set和$unset
  db.products.update(
    { sku: "abc123" },
    { $set: { quantity: 500, instock: true, "details.make": "ZYX" } }
)
  unset删除一个field,后面跟的值不影响.
  db.products.update( { sku: "unknown" },
                    { $unset: {
                                quantity: "",
                                instock: ""
                              }
                    }
)

  

  $min和$max
  min就是更新为指定值和当前值的min, max反之.
  

  $currentdate
  直接设为当前时间
  

  基本的update oprator就是这些了,是不是很简单
  -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  考虑到文档的嵌套结构,情况就有点麻烦了.
  首先看一下嵌套文档的情况:
  db.inventory.find(
    {
      producer:
        {
          company: 'ABC123',
          address: '123 Street'
        }
    }
)
  db.inventory.find( { 'producer.company': 'ABC123' } )

  这是单纯的嵌套文档.这两种方法都可以.
  

  如果存在array,array里面又有嵌套文档.情况又不一样了
  dot-notation
  先看简单的array的情况:
  假设有如下doc
  { _id: 5, type: "food", item: "aaa", ratings: [ 5, 8, 9 ] }
{ _id: 6, type: "food", item: "bbb", ratings: [ 5, 9 ] }
{ _id: 7, type: "food", item: "ccc", ratings: [ 9, 5, 8 ] }
  

  那么:
  db.inventory.find( { ratings: 5 } ) 会找出 rating中包含5的.
  db.inventory.find( { 'ratings.0': 5 } )会找出第一个元素是5的.

  db.inventory.find( { ratings: { $elemMatch: { $gt: 5, $lt: 9 } } } ) 使用elemmatch要求rating至少一个元素满足所有后面的条件.比如1和3中,是有8可以满足

  db.inventory.find( { ratings: { $gt: 5, $lt: 9 } } )没有使用elemmatch,则要求rating中元素的组合可以满足所有后面的条件. 1,2,3都满足.

  现在看一下比较复杂的情况, array中包含嵌套文档:
  考虑如下doc:
  {
  _id: 100,
  type: "food",
  item: "xyz",
  qty: 25,
  price: 2.5,
  ratings: [ 5, 8, 9 ],
  memos: [ { memo: "on time", by: "shipping" }, { memo: "approved", by: "billing" } ]
}


{
  _id: 101,
  type: "fruit",
  item: "jkl",
  qty: 10,
  price: 4.25,
  ratings: [ 5, 9 ],
  memos: [ { memo: "on time", by: "payment" }, { memo: "delayed", by: "shipping" } ]
}

  那么
  db.inventory.find( { 'memos.0.by': 'shipping' } ) 查找memos第一个元素的by是shipping的
  db.inventory.find( { 'memos.by': 'shipping' } ) 查找memos有元素的by是shipping的

  使用elemmatch和不使用emelmath的情况如前所示.
  

  --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  array在mongo是一种重要的数据结构,详细看一下它的内容.放在下一篇吧
  

  

  

         版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 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-137796-1-1.html 上篇帖子: mongo db backup 2 下篇帖子: 如何获取mongoDB数据库大小
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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