MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Nhận giá trị ObjectIdHex từ truy vấn mgo

Giá trị được liên kết với khóa "_id" thuộc loại bson.ObjectId mà chỉ đơn giản là một chuỗi string .

bson.M là một loại giao diện map[string]interface{} , vì vậy bạn cần Xác nhận loại để lấy id dưới dạng ObjectId :

objid, ok := m["_id"].(ObjectId)
if !ok {
    panic("Not ObjectId")
}

ObjectId ObjectId.Hex() phương thức trả về chính xác những gì bạn muốn:id đối tượng dưới dạng chuỗi hex "thuần túy":

fmt.Println(objid.Hex())

Lựa chọn thay thế

objid chỉ có thể được chuyển đổi thành string vì kiểu cơ bản của nó là string . Vì vậy, bạn có thể sử dụng một số tùy chọn khác để chuyển đổi nó thành chuỗi string :

hexid := fmt.Sprintf("%x", string(objid))

Nếu bạn chỉ muốn in nó, bạn có thể thực hiện trực tiếp:

fmt.Printf("%x", string(objid))

Lưu ý: Chuyển nó thành string quan trọng khác là fmt gói sẽ gọi String() của nó phương thức dẫn đến một chuỗi như ObjectIdHex("537f700b537461b70c5f0000") và đây là những gì sẽ được chuyển đổi thành hex, điều này rõ ràng không phải là những gì bạn muốn.

Ngoài ra bạn có thể sử dụng encoding/hex gói và hex.EncodeToString() chức năng:

hexid := hex.EncodeToString([]byte(objid))



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Phát triển cơ sở dữ liệu Python và MongoDB

  2. pymongo:MongoClient hoặc Kết nối

  3. MongoDB Auth Không tìm được tên người dùng trên Bitnami MEAN Stack Image

  4. Spring không lưu đối tượng vào MongoDB một cách chính xác

  5. Tổng hợp Mongoose không lọc theo ngày nhập