日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【MongoDB】BSON类型

發(fā)布時(shí)間:2024/3/24 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【MongoDB】BSON类型 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

一、ObjectId

二、字符串(String)

三、時(shí)間戳(Timestamps)

四、日期(Date)


BSON是一種二進(jìn)制序列化格式,用于在MongoDB中存儲(chǔ)文檔和進(jìn)行遠(yuǎn)程過程調(diào)用。 有關(guān)BSON規(guī)范請(qǐng)?jiān)L問bsonspec.org

每種BSON類型標(biāo)識(shí)符都具有整數(shù)和字符串兩種表示方式,如下表:

類型

編號(hào)

別名

注釋

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 code with scope

15

“javascriptWithScope”

Deprecated?in MongoDB 4.4

32-bit integer

16

“int”

?

Timestamp

17

timestamp

?

64-bit integer

18

“l(fā)ong”

?

Decimal128

19

decimal

New in version 3.4

Min?Key

-1

minKey

?

Max?Key

127

maxKey

?

  • $ type運(yùn)算符支持使用這些值根據(jù)BSON類型查詢字段。 $ type還支持類型編號(hào)的別名,該別名與integer, decimal, double, ?long?BSON類型匹配。
  • $ type聚合運(yùn)算符返回其參數(shù)的BSON類型。
  • 如果$ isNumber聚合運(yùn)算符的參數(shù)為BSON類型integer, decimal, double, ?long.則返回true。(New in version 4.4)

注:$ type用于篩選字段值是指定的BSON?type(s)類型的文檔。例如:

{ field: { $type: <BSON type> } }

{ field: { $type: [ <BSON type1> , <BSON type2>, ... ] } }

要查看字段類型,請(qǐng)參閱mongo Shell檢查字段類型

將BSON轉(zhuǎn)換為JSON,請(qǐng)參閱MongoDB擴(kuò)JSON

以下各節(jié)描述了BSON類型需要特別注意的事項(xiàng)。

?

一、ObjectId

ObjectId比較小,還是唯一的,可以快速生成并排序。ObjectId值的長(zhǎng)度為12個(gè)字節(jié),包括:

  • 4字節(jié)的時(shí)間戳(自Unix時(shí)代以來以秒為單位的時(shí)間戳值),代表ObjectId的創(chuàng)建
  • 5字節(jié)的隨機(jī)值
  • 3字節(jié)的遞增計(jì)數(shù)器,初始化值是隨機(jī)值

雖然BSON格式本身是低位字節(jié)序,但時(shí)間戳和計(jì)數(shù)器值卻是高位字節(jié)序,最有效字節(jié)出現(xiàn)在字節(jié)序列前端。

字節(jié)序,顧名思義字節(jié)的順序,就是大于一個(gè)字節(jié)類型的數(shù)據(jù)在內(nèi)存中的存放順序(一個(gè)字節(jié)的數(shù)據(jù)當(dāng)然就無需談順序的問題了)。

字節(jié)序分為兩類:Big-Endian和Little-Endian,定義如下:

a) Little-Endian就是低位字節(jié)排放在內(nèi)存的低地址端,高位字節(jié)排放在內(nèi)存的高地址端。

b) Big-Endian就是高位字節(jié)排放在內(nèi)存的低地址端,低位字節(jié)排放在內(nèi)存的高地址端。

c) 網(wǎng)絡(luò)字節(jié)序:TCP/IP各層協(xié)議將字節(jié)序定義為Big-Endian,因此TCP/IP協(xié)議中使用的字節(jié)序通常稱之為網(wǎng)絡(luò)字節(jié)序。

在MongoDB中,存儲(chǔ)在集合中的每個(gè)文檔都需要一個(gè)唯一的_id字段作為主鍵。如果插入的文檔省略_id字段,則MongoDB驅(qū)動(dòng)程序會(huì)自動(dòng)為_id字段生成ObjectId類型值。

同理,通過upserttrue更新操作插入的文檔時(shí),若_id字段省略,也自動(dòng)生成。

MongoDB客戶端應(yīng)添加一個(gè)唯一ObjectId值的_id字段。在_id字段中使用ObjectIds具有以下額外優(yōu)點(diǎn):

  • 通過mongo shell,可以使用ObjectId.getTimestamp()方法查看ObjectId的創(chuàng)建時(shí)間。
  • 在存儲(chǔ)ObjectId值的_id字段上進(jìn)行排序大致相當(dāng)于按創(chuàng)建時(shí)間進(jìn)行排序。

重要提示

盡管ObjectId值應(yīng)隨時(shí)間增加,但不一定是單調(diào)的。這是因?yàn)樗麄?#xff1a;

  • ObjectId僅包含秒級(jí)時(shí)間戳,因此在同一秒內(nèi)創(chuàng)建的ObjectId值沒有保證的順序
  • 由客戶端生成,客戶端可能具有不同的系統(tǒng)時(shí)鐘。

參考資料:ObjectId()

?

二、字符串(String)

BSON字符串是UTF-8編碼。

通常,在對(duì)BSON進(jìn)行序列化和反序列化時(shí),每種編程語言的驅(qū)動(dòng)程序都會(huì)從該語言的字符串格式轉(zhuǎn)換為UTF-8。這樣就可以輕松地將大多數(shù)國(guó)際字符存儲(chǔ)在BSON字符串中。 [1]此外,MongoDB $ regex查詢?cè)趓egex字符串中支持UTF-8。

[1]對(duì)于一個(gè)UTF-8字符集的字符串,對(duì)字符串使用sort()是合理的。但是,由于內(nèi)部sort()使用C ++ strcmp api,因此排序順序可能會(huì)錯(cuò)誤地處理某些字符。

?

三、時(shí)間戳(Timestamps)

BSON有一種在MongoDB使用的特殊的內(nèi)部時(shí)間戳類型,并且與常規(guī)Date類型無關(guān)。此內(nèi)部時(shí)間戳記類型是64位值,其中:

  • 最重要的32位是time_t值(自Unix時(shí)代以來的秒數(shù))
  • 最不重要的32位是某1秒內(nèi)操作的遞增序數(shù)

由于BSON格式為低位優(yōu)先,因此首先存儲(chǔ)了最不重要的32位,但是mongod實(shí)例在所有平臺(tái)上始終將先比較time_t值,在比較序數(shù)值,而不管字節(jié)順序如何。

在一個(gè)mongod單實(shí)例中,時(shí)間戳值始終是唯一的。

在復(fù)本集中,操作日志(oplog)有一個(gè)ts字段。該字段值反映了BSON時(shí)間戳值的操作時(shí)間。

注意

BSON?timestamp?類型是MongoDB內(nèi)部使用。大多數(shù)情況下,在應(yīng)用程序開發(fā)中,需要使用BSON?date類型。更多信息,參考Date

如果插入的文檔包含帶有空時(shí)間戳值的頂級(jí)字段時(shí),MongoDB會(huì)將空時(shí)間戳值替換為當(dāng)前時(shí)間戳值,但以下情況除外:如果_id字段本身包含空的時(shí)間戳值,則它將始終按原樣插入并且不會(huì)被替換。

例:

插入有空時(shí)間戳值的文檔:

db.test.insertOne( { ts: new Timestamp() } );

然后運(yùn)行db.test.find()將返回一個(gè)文檔(內(nèi)容類似):

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

mongodb服務(wù)已將ts的空timestamp值替換為插入時(shí)的timestamp值。

?

四、日期Date

BSON Date是一個(gè)64位整數(shù),代表自Unix紀(jì)元(1970年1月1日)到現(xiàn)在的毫秒數(shù)。這樣可以追溯到過去和未來約2.9億年的日期范圍。

官方的BSON規(guī)范將BSON日期類型稱為UTC日期。

BSON日期類型已簽名。 [2]負(fù)值表示1970年之前的日期。

例如,在mongo shell中使用?new Date()函數(shù)創(chuàng)建Date:

var mydate1 = new Date()

例如,在mongo shell中使用ISODate()函數(shù)創(chuàng)建Date:

var mydate2 = ISODate()

例如,將日期值轉(zhuǎn)成字符串:

mydate1.toString()

例如,返回日期值的月份值;月索引從零開始,因此一月是月份0:

mydate1.getMonth()

?

[2]在2.0版之前,Date值被誤解為無符號(hào)整數(shù),這會(huì)影響日期字段上的排序,范圍查詢和索引。由于升級(jí)時(shí)不會(huì)重新創(chuàng)建索引。因此,如果使用較早版本的Date值創(chuàng)建了索引,并且1970年之前的日期與你的應(yīng)用程序相關(guān),請(qǐng)重新索引。

總結(jié)

以上是生活随笔為你收集整理的【MongoDB】BSON类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美女av片 | 精品人妻一区二区三区久久 | 伊人98| 伊人久久精品 | 男女日批免费视频 | 激情五月在线观看 | 久久久久久久久久久久91 | 亚洲理论中文字幕 | 日韩在线第三页 | 三级福利片| av不卡免费 | 人妻少妇偷人精品久久性色 | 探花国产 | 波多野结衣一区在线 | 日本亚洲一区二区 | 色综合久久久久无码专区 | 三级色网 | 91呦呦| 国产三级伦理片 | 在线观看特色大片免费网站 | 色婷婷av一区二区三区麻豆综合 | 国产精品久久久久久久久久久久久久 | 日本黄色三级网站 | 免费美女视频网站 | 蜜桃av色偷偷av老熟女 | 天堂在线日本 | 国产激情二区 | 殴美一区二区 | 欧美日b片 | 亚洲在线观看一区二区 | 蜜桃视频在线播放 | 午夜亚洲一区 | 性一交一乱一伧国产女士spa | 青青草原在线免费 | 老司机综合网 | 住在隔壁的她动漫免费观看全集下载 | 99久久婷婷国产综合精品 | 99热超碰在线 | 精品国产欧美一区二区三区成人 | 久草99| 一本久| 麻豆乱码国产一区二区三区 | 精品免费国产 | 97精品人人妻人人 | 国产又粗又猛又爽视频 | 免费看日韩av | 九九爱视频 | 亚洲精品高清在线观看 | 国产精品无码在线播放 | 91视频观看| 波多野结衣mp4 | 在线免费观看国产 | 男人猛吃奶女人爽视频 | 国产熟女一区二区丰满 | 亚洲精久久 | 国产一区日韩精品 | 苏晴忘穿内裤坐公交车被揉到视频 | 91蝌蚪少妇偷拍 | 亚洲午夜无码久久 | 黑人精品一区二区三区 | 毛片视频网站 | 日韩免费网站 | 爆乳2把你榨干哦ova在线观看 | 草草影院第一页yycc.com | 中文字幕日韩视频 | 日韩在线国产精品 | 欧美做爰爽爽爽爽爽爽 | 性猛交富婆╳xxx乱大交麻豆 | 大陆日韩欧美 | 国产不卡视频在线播放 | 91久久电影| 国产成人精品一区二区三区福利 | 337p粉嫩大胆色噜噜噜 | 欧美日韩999 | 亚洲性av| 超碰97人人射妻 | 精品色| 91久色视频 | 国产精品999. | 天天操天天添 | 国产精品乱码久久久 | 一区二区中文字幕在线观看 | 网红av在线 | ass亚洲肉体欣赏pics | 重囗味sm一区二区三区 | www.av网址 | 91导航| 中文字幕在线观看视频一区二区 | 女厕厕露p撒尿八个少妇 | 久久精品视频免费观看 | 国产精品1234 | 亚洲av综合色区无码二区爱av | 成人深夜视频 | 国产男男chinese网站 | 久久人人爽人人爽人人片av高清 | 成人性生活视频 | 九九爱爱视频 | 久久精品五月天 | 久草免费福利 |