MongoDB教學
MongoDB快速入門
MongoDB歷史
MongoDB特點
MongoDB數據庫的優點
MongoDB安裝配置(Windows)
MongoDB安裝配置(Ubuntu)
MongoDB安裝配置(RedHat/CentOS)
MongoDB數據建模
MongoDB創建數據庫
MongoDB刪除數據庫
MongoDB創建集合
MongoDB刪除集合
MongoDB數據類型
MongoDB插入文檔
MongoDB查詢文檔
MongoDB更新文檔
MongoDB刪除文檔
MongoDB投影(選擇字段)
MongoDB限制記錄數
MongoDB排序記錄
MongoDB索引
MongoDB聚合
MongoDB複製
MongoDB分片
MongoDB備份與恢復
MongoDB部署
Java連接MongoDB操作
Python連接MongoDB操作
PHP連接MongoDB操作
Ruby連接MongoDB操作
MongoDB自動遞增序列
MongoDB中沒有類似SQL數據庫中那麼拿來即用的自動增量功能。 默認情況下,它使用_id
字段的12
字節ObjectId作爲唯一標識文檔的主鍵。 但是,可能存在我們可能希望_id
字段擁有除ObjectId之外的一些自動遞增值的情況。
由於MongoDB不提供默認自動增長功能,所以我們通過使用MongoDB文檔中所建議的計數器集合以編程的方式來實現此功能。
使用計數器集合
考慮以下product
文檔。 我們希望_id
字段是從:1
,2
,3
,4
到n
開始的自動遞增整數序列。
{
"_id":1,
"product_name": "Huawei P9",
"category": "mobiles"
}
爲此,創建一個計數器集合,它將跟蹤所有序列字段的最後一個序列值。
>db.createCollection("counters")
現在,將把以下文檔插入計數器集合中,以productid
作爲鍵 -
{
"_id":"productid",
"sequence_value": 0
}
字段sequence_value
跟蹤序列的最後一個值。使用以下代碼將此序列文檔插入計數器集合中 -
>db.counters.insert({_id:"productid",sequence_value:0})
使用Javascript函數
現在將在創建一個新文檔時使用函數getNextSequenceValue
,並將返回的序列值分配爲文檔的_id
字段的值。
使用以下代碼插入兩個示例文檔 -
>db.products.insert({
"_id":getNextSequenceValue("productid"),
"product_name":"HuaWei P9",
"category":"mobiles"
})
>db.products.insert({
"_id":getNextSequenceValue("productid"),
"product_name":"OPPO X6s",
"category":"mobiles"
})
如上所示,使用getNextSequenceValue
函數來設置_id
字段的值。
>db.products.find()
上述查詢返回了具有自動遞增的_id
字段的值,如下文檔所示 -
{ "_id" : 1, "product_name" : "HuaWei P9", "category" : "mobiles"}
{ "_id" : 2, "product_name" : "OPPO X6s", "category" : "mobiles" }