MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Mengapa PyMongo menyandikan uuid.uuid1() sebagai BSON::Binary?

Serialisasi default untuk uuid Python menggunakan UUID representasi biner dalam spesifikasi BSON karena ini memastikan penyortiran yang konsisten untuk kueri rentang, dan juga menggunakan lebih sedikit penyimpanan untuk data/indeks.

Misalnya, ketiga string ini setara dalam hex:

5d78ad35ea5f11e1a183705681b29c47
5D78AD35EA5F11E1A183705681B29C47
5d78ad35ea5f11e1A183705681B29C47

..tetapi memiliki urutan pengurutan yang berbeda sebagai string:

> db.uuidsort.find().sort({_id:1})
{ "_id" : "5D78AD35EA5F11E1A183705681B29C47" }
{ "_id" : "5d78ad35ea5f11e1A183705681B29C47" }
{ "_id" : "5d78ad35ea5f11e1a183705681b29c47" }

Membandingkan ukuran bson:

> db.uuidtest.find()
{ "_id" : BinData(3,"XXitNepfEeGhg3BWgbKcRw==") }
{ "_id" : "5d78ad35ea5f11e1a183705681b29c47" }

> Object.bsonsize(db.uuidtest.findOne({_id: BinData(3,"XXitNepfEeGhg3BWgbKcRw==")}))
31

> Object.bsonsize(db.uuidtest.findOne({_id: "5d78ad35ea5f11e1a183705681b29c47"}))
47

Jika Anda ingin menyisipkan sebagai string, Anda dapat menggunakan UUID.hex untuk mendapatkan ekuivalen string 32 karakter:

>>> db.uuidtest.insert({'_id': uuid.hex})
'5d78ad35ea5f11e1a183705681b29c47'

Jika Anda ingin menemukan UUID dengan string dari Python, Anda dapat menggunakan uuid. UUID metode:

>>> db.uuidtest.find_one({'_id':uuid.UUID('5d78ad35ea5f11e1a183705681b29c47')})
{u'_id': UUID('5d78ad35-ea5f-11e1-a183-705681b29c47')}

Jika Anda ingin menemukan UUID dengan string dari mongo shell, ada UUID() pembantu:

> db.uuidtest.find({_id:UUID('5d78ad35ea5f11e1a183705681b29c47')})
{ "_id" : BinData(3,"XXitNepfEeGhg3BWgbKcRw==") }

Catatan:ada beberapa subtipe UUID lain yang tersedia untuk interoperabilitas dengan versi driver lain, seperti yang dijelaskan dalam Dokumen API untuk bson.binary .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pembaruan sebagian dari subdokumen dengan nodejs/luwak

  2. ScaleGrid Mengumumkan Hosting MongoDB Bersama di Amazon AWS

  3. Permintaan mongodb data pegas mengonversi String ke ObjectId secara otomatis

  4. Kueri geospasial MongoDB dengan $not

  5. Menggunakan MongoDB, Express, Node.Js dan GridFS-stream untuk menyimpan file video dan gambar