亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MongoDB 常用的數(shù)據(jù)類型和基本操作

 更新時間:2021年03月26日 09:12:12   作者:AsiaYe  
這篇文章主要介紹了MongoDB 常用的數(shù)據(jù)類型和基本操作,幫助大家更好的理解和學(xué)習(xí)使用MongoDB數(shù)據(jù)庫,感興趣的朋友可以了解下

NO.1 MongoDB的常用數(shù)據(jù)類型

    MongoDB中的文檔類似json,我們知道,在json中,最常用的數(shù)據(jù)類型有null、bool、數(shù)組、字符串、數(shù)據(jù)、json對象等等。相對比較少,比如對于時間類型的數(shù)據(jù),json是無法表示的,而MongoDB中對json進行了簡單的優(yōu)化,像json,但是又不是json。下面我們慢慢說

     MongoDB的常用數(shù)據(jù)類型和MySQL比較像,你可以對比著看。它的常用數(shù)據(jù)類型有:

1、null

用于表示空值或者不存在的字段

{"x":null}

2、bool

這個容易理解,true or false

{"x":true}

3、整數(shù)

在MongoDB自帶的shell中不可用,shell中的需要使用函數(shù)來表示整數(shù),如下:

{"x":NumberInt("3")}

如果我們寫成

{"x":3}

這里的3會被表示成double。

4、字符串

最常用的數(shù)據(jù)類型

{"x":"string"}

5、對象id

對象id是12字節(jié)的唯一ID

{"x":ObjectId()}

在MongoDB的數(shù)據(jù)記錄里面,也就是文檔里面,必須有一個_id鍵,這個_id鍵你可以簡單理解為唯一標識,類似MySQL中的自增主鍵,但是它一般不設(shè)置成自增的,因為在分布式環(huán)境中,同步自動增加主鍵值既費時又費力,MongoDB為了保證分布式場景下的性能,通過自身生成方式來產(chǎn)生_id,_id的類型,稱之為ObjectId類型。

該類型使用12字節(jié)的存儲空間,每個字節(jié)里面是2位16進制的數(shù)字,是一個24位的字符串。這12個字節(jié)的生成方式如下:

0、1、2、3位是時間戳,提供秒級別唯一性

4、5、6位是機器的唯一標識符,提供機器級別唯一性

7、8位是當前生成ObjectId的進程標識符,保證不同進程的唯一性

9、10、11位是一個計數(shù)器,保證同一秒相同進程產(chǎn)生的ObjectId的唯一性。

6、日期類型

日期類型存儲的是從標準紀元開始的毫秒數(shù),不存儲時區(qū)。

{"x":new Data()}

示例如下:

> db.num.insert({"age": new Date()})
WriteResult({ "nInserted" : 1 })
> db.num.find()
{ "_id" : ObjectId("5f96b5e15e5c5ff982b9c6af"), "age" : 28 }
{ "_id" : ObjectId("5f9835d0f24f04e23fb63878"), "age" : 3 }
{ "_id" : ObjectId("5f983621f24f04e23fb63879"), "age" : 3 }
{ "_id" : ObjectId("5f9838d2f24f04e23fb6387a"), "age" : ISODate("2020-10-27T15:12:18.739Z") }

7、數(shù)組

值的集合或者列表可以表示成數(shù)組

{"x":["a","b","c"]}

8、內(nèi)嵌文檔

文檔可以包含別的文檔

{"x":{"foo":"bar"}}

9、代碼

文檔中可以包含JavaScript代碼

{"x":function(){/*-----*/}}

NO.2 集合文檔的基本操作

     這塊兒可能是比較關(guān)鍵的部分了,在MySQL中,增刪改查是最最基礎(chǔ)的功能,在MongoDB中,這些技能也是必備的。

集合相關(guān)操作

1、查詢集合

查看當前數(shù)據(jù)庫下面的集合,可以使用show collections命令。

2、創(chuàng)建集合

在MongoDB中,不需要單獨創(chuàng)建集合,一般情況下,只要我們直接將文檔插入到集合中,就可以看到集合自動生成了,舉個例子:

> show collections # 查看集合
num
person

> db.aaa.insert({"name":"yeyz"})
WriteResult({ "nInserted" : 1 })

> show collections #查看集合,發(fā)現(xiàn)aaa這個集合生成了
aaa
num
person

3、刪除集合

> show collections
aaa
num
person
> 
> db.aaa.drop() #刪除集合
true
> show collections
num
person

關(guān)于集合,最常見的操作就是上面幾個。查詢集合、創(chuàng)建集合、刪除集合。

再來看文檔相關(guān)的操作:

1、插入文檔

上面的例子中,我們使用insert操作已經(jīng)演示了插入文檔的方法。我把兩種常見的方法寫在一起:

方法一:直接插入文檔
> db.aaa.insert({"name":"yeyz"})
WriteResult({ "nInserted" : 1 })

方法二:將文檔保存在變量里面,插入變量
> record={"name":"zhangsan"}
{ "name" : "zhangsan" }
> db.aaa.insert(record)
WriteResult({ "nInserted" : 1 })

查找集合所有內(nèi)容
> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
{ "_id" : ObjectId("5f983ba1f24f04e23fb6387d"), "name" : "zhangsan" }

2、查詢文檔

查詢文檔的方法比較多,展開來說可以說很久,就像我們的SQL語法一樣,有各種各樣的寫法,這里先說下最簡單的,查找所有對象、查找一條對象,或者查找某一條對象的方法??蠢樱?/p>

#查找所有記錄
> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
{ "_id" : ObjectId("5f983ba1f24f04e23fb6387d"), "name" : "zhangsan" }
> 
>
#查找一條記錄
> db.aaa.findOne()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }

#帶過濾條件的,查找name=zhangsan的記錄
> db.aaa.find({"name":"zhangsan"})
{ "_id" : ObjectId("5f983ba1f24f04e23fb6387d"), "name" : "zhangsan" }

3、刪除記錄

刪除記錄的方法也比較簡單,如下:

#查找所有記錄
> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
{ "_id" : ObjectId("5f983ba1f24f04e23fb6387d"), "name" : "zhangsan" }

#刪除name=zhangsan的記錄
> db.aaa.remove({"name":"zhangsan"})
WriteResult({ "nRemoved" : 1 })
> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }

# 僅剩name=yeyz的一條記錄
> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }

如果不想要過濾條件,可以直接使用:

db.aaa.remove()來刪除所有的記錄。

4、更新記錄

更新記錄,在MongoDB中有些麻煩,例如下面的場景

#查找所有記錄
> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
{ "_id" : ObjectId("5f983d76f24f04e23fb6387e"), "name" : "zhangsan" }

#用一個變量表示要修改的文檔
> record={"name" : "yeyz","age":18}
{ "name" : "yeyz", "age" : 18 }

#用剛才的變量替換匹配條件的結(jié)果
> db.aaa.update({"name" : "yeyz"},record)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz", "age" : 18 }
{ "_id" : ObjectId("5f983d76f24f04e23fb6387e"), "name" : "zhangsan" }

# 修改變量的age屬性
> record.age=20
20

#再次替換原來的文檔
> db.aaa.update({"name" : "yeyz"},record)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz", "age" : 20 }
{ "_id" : ObjectId("5f983d76f24f04e23fb6387e"), "name" : "zhangsan" }

上面的方法在條件唯一匹配的時候不會有問題,但是在條件不唯一匹配的場景下,可能存在一些隱患,下次我們再分享,今天就先這么點兒吧。

每天的內(nèi)容不多,慢慢來,一點一點搞懂它。。。晚安嘍。

以上就是MongoDB 常用的數(shù)據(jù)類型和基本操作的詳細內(nèi)容,更多關(guān)于MongoDB 數(shù)據(jù)類型和基本操作的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MongoDB查詢操作限制返回字段的方法

    MongoDB查詢操作限制返回字段的方法

    這篇文章主要介紹了MongoDB查詢操作限制返回字段的方法,需要的朋友可以參考下
    2014-05-05
  • MongoDB磁盤空間占滿導(dǎo)致數(shù)據(jù)庫被鎖定的解決方法

    MongoDB磁盤空間占滿導(dǎo)致數(shù)據(jù)庫被鎖定的解決方法

    我在實際項目中,遇到一個問題,隨著數(shù)據(jù)每天的不斷增加,導(dǎo)致mongodb的磁盤空間站滿了,數(shù)據(jù)庫被鎖了,無法使用,所以本文給大家介紹了清理MongoDB數(shù)據(jù)和磁盤空間的方法,需要的朋友可以參考下
    2024-04-04
  • mongodb增量備份腳本的實現(xiàn)和原理詳解

    mongodb增量備份腳本的實現(xiàn)和原理詳解

    MongoDB本身不支持增量備份,所以這里介紹我找到的方法,下面這篇文章主要給大家介紹了關(guān)于mongodb增量備份腳本的實現(xiàn)和原理的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-09-09
  • MongoDB數(shù)據(jù)庫的安裝步驟

    MongoDB數(shù)據(jù)庫的安裝步驟

    MongoDB 是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。本文簡單介紹下MongoDB數(shù)據(jù)庫的安裝
    2021-06-06
  • mongodb中ObjectId和ObjectIdr實現(xiàn)

    mongodb中ObjectId和ObjectIdr實現(xiàn)

    本文主要介紹了mongodb中ObjectId和ObjectIdr實現(xiàn)
    2023-12-12
  • MongoDB存儲時間時差問題的解決方法

    MongoDB存儲時間時差問題的解決方法

    這篇文章主要給大家介紹了關(guān)于MongoDB存儲時間時差問題的解決方法,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用mongodb具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • Mongodb使用$pop刪除數(shù)組中元素的操作指南

    Mongodb使用$pop刪除數(shù)組中元素的操作指南

    本文描述怎樣從Mongodb的文檔數(shù)組字段中,使用$pop刪除數(shù)組中的元素,文中通過代碼示例給大家講解的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-06-06
  • MongoDB 3.6.5常見的安裝失敗原因和解決辦法

    MongoDB 3.6.5常見的安裝失敗原因和解決辦法

    在開發(fā)過程中,可能會用到 MongoDB 數(shù)據(jù)庫,在進行MongoDB的安裝過程中,可能會遇到各種各樣的問題導(dǎo)致安裝失敗,本文將針對常見的安裝失敗情況(,例如端口占用、系統(tǒng)文件問題和版本兼容問題等)進行分析,并提供解決方案和相應(yīng)的代碼示例
    2024-03-03
  • mongodb root用戶創(chuàng)建數(shù)據(jù)庫提示not master的解決

    mongodb root用戶創(chuàng)建數(shù)據(jù)庫提示not master的解決

    這篇文章主要介紹了mongodb root用戶創(chuàng)建數(shù)據(jù)庫提示not master的解決方案,具有很好的參考價值,希望對大家有所幫助。
    2023-02-02
  • mongose 模糊檢索實現(xiàn)方法示例詳解

    mongose 模糊檢索實現(xiàn)方法示例詳解

    這篇文章主要為大家介紹了mongose 模糊檢索實現(xiàn)方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08

最新評論