[TIL]10月16日:mongodb Object Id
デフォルトではmongodyが集合にデータを入れる場合、ObjectIdを直接入れない限り、自動的にidにObjectId値が付与されて格納されます.
すなわち、idを直接作成することなく、自動的に生成されたObjectId値を使用してデータを操作することができる.
ObjectIdは、12バイトサイズの文字と数字からなる値です.ObjectId()の値を返すと、結果は12バイトの16進数を返します.これらの値にはそれぞれ意味がある.
ObjectId(「315 ae 828340736534 g 4 b 3275」)で説明します.
315ae828/340736534g/4b3275
⬇️
timestamp/random value/counter
315 ae 828:最初の4 bバイトはタイムスタンプ値を表す.この値は、生成されたデータを秒単位で測定します.
3400736534 g:次の5 byteはランダムに生成された値です.
4 b 3275:次の3バイトは増加したcountであり、初期値はランダムに生成される.
MongoDBはBSON形式でデータを格納する.
BSONは、JSONドキュメントをバイナリ形式でエンコードするバイナリJSONの略です.
当初はMongoDBによって提案されていたが,主にJSON形式のデータを格納したり,ネットワークにデータを転送したりするために用いられる.その利点は、JSON構造にバイナリデータを追加できることです.
リファレンス
Ohgyun. 「Bsonを理解する」ミツバチ開発ログ、TISTORY、26 Mar.2019https://ohgyun.com/421.
モンゴDBは当初JSONを利用して開発されたそうです.その後いくつかの問題を発見した. JSONテキストベースの構文解析が遅い. JSONは空間効率の成果とは程遠い.(なかなか話せない…)
それ以外にも、多くの問題が発生しています.そこで思いついたのがBSON.JSON構造の利点は,機器が素早く読み取れるバイナリ形式として保存することである. JSONでは文字列、boolean、数字、配列を用いて表すことができ、BSONではより詳細に表すことができる.数字はInteger、Float、Long、Decimalに分類でき、日付の形式も格納できます.
リファレンス
坤坤「[Mongodb]Mongodbが使用するJSON vs Bson.」クイーンズランド州、TISTORY、11 Mar.201https://koonsland.tistory.com/86.
ObjectIdを文字列に変更します.
すなわち、idを直接作成することなく、自動的に生成されたObjectId値を使用してデータを操作することができる.
ObjectIdは、12バイトサイズの文字と数字からなる値です.ObjectId()の値を返すと、結果は12バイトの16進数を返します.これらの値にはそれぞれ意味がある.
ObjectId(「315 ae 828340736534 g 4 b 3275」)で説明します.
315ae828/340736534g/4b3275
⬇️
timestamp/random value/counter
315 ae 828:最初の4 bバイトはタイムスタンプ値を表す.この値は、生成されたデータを秒単位で測定します.
3400736534 g:次の5 byteはランダムに生成された値です.
4 b 3275:次の3バイトは増加したcountであり、初期値はランダムに生成される.
BSONは、JSONドキュメントをバイナリ形式でエンコードするバイナリJSONの略です.
当初はMongoDBによって提案されていたが,主にJSON形式のデータを格納したり,ネットワークにデータを転送したりするために用いられる.その利点は、JSON構造にバイナリデータを追加できることです.
リファレンス
Ohgyun. 「Bsonを理解する」ミツバチ開発ログ、TISTORY、26 Mar.2019https://ohgyun.com/421.
BSONの出現
モンゴDBは当初JSONを利用して開発されたそうです.その後いくつかの問題を発見した.
それ以外にも、多くの問題が発生しています.そこで思いついたのがBSON.JSON構造の利点は,機器が素早く読み取れるバイナリ形式として保存することである.
リファレンス
坤坤「[Mongodb]Mongodbが使用するJSON vs Bson.」クイーンズランド州、TISTORY、11 Mar.201https://koonsland.tistory.com/86.
PythonにObjectId値を適用
ObjectIdを文字列に変更します.
from bson import ObjectId
oid = ObjectId()
oid_str = str(oid)
# oid_str is now '555fc7956cda204928c9dbab'
文字列をObjectIdに変更します.from bson import ObjectId
oid_str = '555fc7956cda204928c9dbab'
oid2 = ObjectId(oid_str)
print(repr(oid2))
# ObjectId('555fc7956cda204928c9dbab')
この方法でmongodyのidにアクセスしてデータを操作できます!Reference
この問題について([TIL]10月16日:mongodb Object Id), 我々は、より多くの情報をここで見つけました https://velog.io/@rudwnd33/TIL-10월-16일テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol