一、Object是什麼
ObjectId('507f191e810c19729de860ea')
Object是一種MongoDB中的數據類型,由12個字節組成的全局唯一標識符。MongoDB中的每個文檔都必須有一個Object _id,類似於主鍵的概念。Object _id可以手動指定,也可以由MongoDB自動生成。
Object _id的前四個字節表示秒級時間戳,下三個字節表示MongoDB實例,接下來兩個字節表示當前進程,最後三個字節表示一個自增計數器。
二、ObjectID的用處
ObjectID在MongoDB的主鍵索引和排序等方面扮演着重要的角色。每個文檔都必須有一個唯一的ObjectID,用來定位和訪問文檔。
三、ObjectID的生成方式
const { ObjectID } = require('mongodb'); const objectId = new ObjectID(); console.log(objectId); // ObjectId("5f311a4484a88157a5b043e2")
可以通過使用MongoDB驅動程序中的ObjectID來生成ObjectID。
手動生成ObjectID的方法:
const hexChars = '0123456789abcdef'; function generateObjectId() { const chars = []; for (let i = 0; i < 24; i += 1) { chars.push(hexChars[Math.floor(Math.random() * 16)]); } return chars.join(''); } console.log(generateObjectId()); // 5f3713e0d6b63e6ce44aabdc
以上是一個生成隨機的24位16進制字符串的函數,可以模擬MongoDB自動生成ObjectID的過程。
四、ObjectID和時間
前4個字節是時間戳,使用時間戳可以近似了解文檔生成的時間。可以使用ObjectID所表示時間的準確性和可讀性較差,一般建議使用標準日期類型。
五、使用ObjectID查詢
db.collection('users').find({ _id: ObjectID('5f3713e0d6b63e6ce44aabdc') });
在查詢MongoDB中的文檔時,可以使用ObjectID來定位文檔。
六、ObjectId的優點
1、全局唯一性
2、可排序性
3、支持分片,可以在分片系統中按照ObjectId進行散列。
4、ObjectId是一個輕量級數據類型。
原創文章,作者:ASHJK,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/368243.html