zoukankan      html  css  js  c++  java
  • mongodb之开发相关

    关于mongodb,有几个大的特点:
    1,用mongo shell的话,它的语法类似于Linux中的命令
    2,mongodb中的函数参数,返回结果基本上用 JSON表示,所以要用JSON的思维来学习mongodb
    ============关于引用
    Mongodb不支持Join操作,代替的方式是引用,
    ===方式一,手工引用,如下:
    就是一个document中的字段值为另一个document的_id,例子:
    original_id=ObjectId()
    db.places.insert(
    {
    "_id":original_id,
    "name":"H.K",
    "url":"aa.bb.cc.aspx"
    }
    )
    db.people.insert(
    {
    "name":"jonh",
    "place_id":original_id,
    "url":"aa.bb.cc.aspx/test"
    }
    )
    ===方式二:DBRef引用,方式如下:
    {$ref::<value>,$id::<value>,$db:<value>}
    其中:
    $ref 是引用的collection的名字
    $id 是引用的document的_id
    $db 是引用的数据名
    ==================ObjectId
    12自己的BSON类型,组成如下:
    4 byte timestamp; 3 byte machine identifier; 2 byte process id, 3 byte counter.
    mongodb默认用它做主键,好处如下:
    1)能得到这个_id的创建时间,通过getTimestamp()方法可以得到
    2)通过_id和创建时间排序的效果一样。
    ===ObjectId()
    这个 mongo shell 提供的包装类,它能产生一个新的ObjectId,属性和方法如下:
    1 str 该_id的值,不过是用16进制字符串表示的。
    2 getTimestamp() 返回ObjectId() 对象的创建时间,返回类型是Date
    3 toString() [V2.2及以后] ObjectId对象的字符串表示,格式如下: ObjectId(...)
    4 valueOf() [V2.2及以后] 和str属性的值相同
    打开命令行工具,连接到mongodb,然后输入如下命令:
    x=ObjectId() 显示结果如下:
    ==返回ObjectId()的时间戳,如下:
    ==返回ObjectId()的字符串,如下:
    ==返回ObjectId()的值,如下:
    ==========Capped Collection
    可覆盖的Collection:超过指定的空间大小后会覆盖最开始的数据,周而复始。
    它的特定:1)插入的顺序就是它在磁盘上的顺序。2)更新时如果让document变大了,那么会更新失败。
    3)不能删除Capped Document的数据,如果要删除所有数据,可以使用 emptycapped 命令
    比较适合:1,可循环的日志,比如规定500M大小的日志,超过500M后会删除最开始的日志,用现在的日志去记录。
    2,Cache,不说了,你懂的。
    ===创建 Capped Collection
    必须显式使用命令 createCollection()来创建;在创建时必须指定一个固定大小(以字节为单位),例子:
    db.createCollection("mycoll",{capped:true,size:10000})
    ==查询命令:
    db.cappedCollection.find().sort($natural:-1) //表示按照插入顺序的反序排列结果(默认按查询顺序排列结果)
    ==检查一个collection是否是capped的:
    db.collection.isCapped()
    ==将一个collection转为capped的:
    db.runCommand({"convertToCapped":"mycoll",size:10000})
  • 相关阅读:
    Linux下的lds链接脚本简介(一)
    linux字符驱动之poll机制按键驱动
    Linux中断处理驱动程序编写
    基于Hexo + Git + Nginx的博客发布
    Visual Studio2012打开时弹出“遇到异常:这可能是由某个扩展导致的”错误的解决办法
    卫星轨道和两行数据TLE
    C#基础系列:开发自己的窗体设计器(PropertyGrid显示中文属性名)
    C# WinForm PropertyGrid用法
    C#基础系列:实现自己的ORM(反射以及Attribute在ORM中的应用)
    [转]计算机视觉、机器学习相关领域论文和源代码大集合
  • 原文地址:https://www.cnblogs.com/imap/p/2789855.html
Copyright © 2011-2022 走看看