• MongoDB


    BSON is a binary serialization format used to store documents and make remote procedure calls in MongoDB. The BSON specification is located at bsonspec.org

    BSON supports the following data types as values in documents. Each data type has a corresponding number and string alias that can be used with the $type operator to query documents by BSON type.

    Type Number Alias Nodes
     Double  1  “double”  
     String  2  “string”  
     Object  3  “object”  
     Array  4  “array”  
     Binary data  5  “binData”  
     Undefined  6  “undefined”  Deprecated.
     ObjectId  7  “objectId”  
     Boolean  8  “bool”  
     Date  9  “date”  
     Null  10  “null”  
     Regular Expression  11  “regex”  
     DBPointer  12  “dbPointer”  Deprecated.
     JavaScript  13  “javascript”  
     Symbol  14  “symbol”  Deprecated.
     JavaScript (with scope)  15  “javascriptWithScope”  
     32-bit integer  16  “int”  
     Timestamp  17   “timestamp”  
     64-bit integer  18   “long”  
     Min key  -1   “minKey”  
     Max key  127  “maxKey”  

    To determine a field’s type, see Check Types in the mongo Shell.

    If you convert BSON to JSON, see the Extended JSON reference.

    Comparison/Sort Order

    When comparing values of different BSON types, MongoDB uses the following comparison order, from lowest to highest:

    1. MinKey (internal type)
    2. Null
    3. Numbers (ints, longs, doubles)
    4. Symbol, String
    5. Object
    6. Array
    7. BinData
    8. ObjectId
    9. Boolean
    10. Date
    11. Timestamp
    12. Regular Expression
    13. MaxKey (internal type)

    MongoDB treats some types as equivalent for comparison purposes. For instance, numeric types undergo conversion before comparison.

    Changed in version 3.0.0: Date objects sort before Timestamp objects. Previously Date and Timestamp objects sorted together.

    The comparison treats a non-existent field as it would an empty BSON Object. As such, a sort on the a field in documents } and a: null } would treat the documents as equivalent in sort order.

    MongoDB sorts BinData in the following order:

    1. First, the length or size of the data.
    2. Then, by the BSON one-byte subtype.
    3. Finally, by the data, performing a byte-by-byte comparison.

    The following sections describe special considerations for particular BSON types.

    ObjectId

    ObjectIds are small, likely unique, fast to generate, and ordered. ObjectId values consists of 12-bytes, where the first four bytes are a timestamp that reflect the ObjectId’s creation, specifically:

    • a 4-byte value representing the seconds since the Unix epoch,
    • a 3-byte machine identifier,
    • a 2-byte process id, and
    • a 3-byte counter, starting with a random value.

    In MongoDB, each document stored in a collection requires a unique _id field that acts as a primary key. If an inserted document omits the _id field, the MongoDB driver automatically generates an ObjectId for the _id field.

    This also applies to documents inserted through update operations with upsert: true.

    MongoDB clients should add an _id field with a unique ObjectId. Using ObjectIds for the _id field provides the following additional benefits:

    • in the mongo shell, you can access the creation time of the ObjectId, using the ObjectId.getTimestamp() method.

    • sorting on an _id field that stores ObjectId values is roughly equivalent to sorting by creation time.

    IMPORTANT: The relationship between the order of ObjectId values and generation time is not strict within a single second. If multiple systems, or multiple processes or threads on a single system generate values, within a single second; ObjectId values do not represent a strict insertion order. Clock skew between clients can also result in non-strict ordering even for values because client drivers generate ObjectId values.

    SEE ALSO: ObjectId()

    String

    BSON strings are UTF-8. In general, drivers for each programming language convert from the language’s string format to UTF-8 when serializing and deserializing BSON. This makes it possible to store most international characters in BSON strings with ease. In addition, MongoDB $regex queries support UTF-8 in the regex string.

    Timestamps

    BSON has a special timestamp type for internal MongoDB use and is not associated with the regular Date type. Timestamp values are a 64 bit value where:

    • the first 32 bits are a time_t value (seconds since the Unix epoch)
    • the second 32 bits are an incrementing ordinal for operations within a given second.

    Within a single mongod instance, timestamp values are always unique.

    In replication, the oplog has a ts field. The values in this field reflect the operation time, which uses a BSON timestamp value.

    NOTE: The BSON timestamp type is for internal MongoDB use. For most cases, in application development, you will want to use the BSON date type. See Date for more information.

    If you insert a document containing an empty BSON timestamp in a top-level field, the MongoDB server will replace that empty timestamp with the current timestamp value. For example, if you create an insert a document with a timestamp value, as in the following operation:

    var a = new Timestamp();
    db.test.insert( { ts: a } );

    Then, the db.test.find() operation will return a document that resembles the following:

    { "_id" : ObjectId("542c2b97bac0595474108b48"), "ts" : Timestamp(1412180887, 1) }

    If ts were a field in an embedded document, the server would have left it as an empty timestamp value.

    Changed in version 2.6: Previously, the server would only replace empty timestamp values in the first two fields, including _id, of an inserted document. Now MongoDB will replace any top-level field.

    Date

    BSON Date is a 64-bit integer that represents the number of milliseconds since the Unix epoch (Jan 1, 1970). This results in a representable date range of about 290 million years into the past and future.

    The official BSON specification refers to the BSON Date type as the UTC datetime.

    BSON Date type is signed. Negative values represent dates before 1970.

    Example

    Construct a Date using the new Date() constructor in the mongo shell:

    var mydate1 = new Date()

    Construct a Date using the ISODate() constructor in the mongo shell:

    var mydate2 = ISODate()

    Return the Date value as string:

    mydate1.toString()

    Return the month portion of the Date value; months are zero-indexed, so that January is month 0:

    mydate1.getMonth()
  • 相关阅读:
    PCA算法---实验代码完整版(实验代码+数据集下载)
    ubuntu 系统 anaconda 虚拟环境下各种包的安装常用命令
    真实机下 ubuntu 18.04 安装GPU +CUDA+cuDNN 以及其版本选择(亲测非常实用)
    ubuntu 18.04/16.04/14.04 双硬盘分区方案
    如何制作 linux 系统 U盘启动盘
    pandas系列 read_excel() 和 to_excel()各参数详解
    pandas系列 read_csv 与 to_csv 方法各参数详解(全,中文版)
    pycharm 修改程序运行所需内存
    如何利用pandas 将excel文件与csv文件进行相互转化
    python读取文件时提示"UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multi
  • 原文地址:https://www.cnblogs.com/huey/p/6118527.html
Copyright © 2020-2023  润新知