Tuần tự hóa mặc định cho một uuid
Python sử dụng UUID
đại diện nhị phân trong đặc tả BSON
bởi vì điều này đảm bảo sắp xếp nhất quán cho các truy vấn phạm vi và cũng sử dụng ít bộ nhớ hơn cho dữ liệu / chỉ mục.
Ví dụ:ba chuỗi này tương đương với nhau trong hệ lục phân:
5d78ad35ea5f11e1a183705681b29c47
5D78AD35EA5F11E1A183705681B29C47
5d78ad35ea5f11e1A183705681B29C47
..nhưng có các thứ tự sắp xếp khác nhau dưới dạng chuỗi:
> db.uuidsort.find().sort({_id:1})
{ "_id" : "5D78AD35EA5F11E1A183705681B29C47" }
{ "_id" : "5d78ad35ea5f11e1A183705681B29C47" }
{ "_id" : "5d78ad35ea5f11e1a183705681b29c47" }
So sánh các kích thước 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
Nếu bạn muốn chèn dưới dạng chuỗi, bạn có thể sử dụng UUID.hex để lấy chuỗi 32 ký tự tương đương:
>>> db.uuidtest.insert({'_id': uuid.hex})
'5d78ad35ea5f11e1a183705681b29c47'
Nếu bạn muốn tìm UUID theo chuỗi từ Python, bạn có thể sử dụng uuid. UUID phương pháp:
>>> db.uuidtest.find_one({'_id':uuid.UUID('5d78ad35ea5f11e1a183705681b29c47')})
{u'_id': UUID('5d78ad35-ea5f-11e1-a183-705681b29c47')}
Nếu bạn muốn tìm UUID theo chuỗi từ mongo
shell, có một UUID()
người trợ giúp:
> db.uuidtest.find({_id:UUID('5d78ad35ea5f11e1a183705681b29c47')})
{ "_id" : BinData(3,"XXitNepfEeGhg3BWgbKcRw==") }
Lưu ý:có một số loại phụ UUID khác có sẵn để tương tác với các phiên bản trình điều khiển khác, như được mô tả trong Tài liệuAPI cho bson.binary .