首頁 > 後端開發 > Golang > 如何使用 mgo 和 bson 透過物件 ID 陣列檢索 MongoDB 文件?

如何使用 mgo 和 bson 透過物件 ID 陣列檢索 MongoDB 文件?

Barbara Streisand
發布: 2024-10-30 06:35:27
原創
786 人瀏覽過

How to Retrieve MongoDB Documents by an Array of Object IDs using mgo and bson?

透過物件ID 陣列檢索MongoDB 文件

在MongoDB 中,可以儲存物件ID 陣列(也稱為_ids)在一個文檔內。若要有效檢索與這些物件 ID 對應的所有文檔,請使用 $in 運算子。

問題:

您有一個十六進位編碼的_ids 陣列:

ids := ["543d171c5b2c12420dd016", "543d171c5b2dd016"]
登入後複製

如何使用mgo 和bson 來擷取對應的文件?

答案:

您的初始方法使用:

query := bson.M{"_id": bson.M{"$in": ids}}
c.Find(query).All()
登入後複製

是不正確的,因為_ids 儲存為物件ID,而不是字串。要透過物件ID 檢索文檔,您需要將十六進位編碼的字串轉換為bson.ObjectId 物件:

oids := make([]bson.ObjectId, len(ids))
for i := range ids {
  oids[i] = bson.ObjectIdHex(ids[i])
}

query := bson.M{"_id": bson.M{"$in": oids}}
c.Find(query).All()
登入後複製

此程式碼:

  1. 建立bson.ObjectId的切片物件。
  2. 迭代十六進位編碼的 _id 字串,使用 bson.ObjectIdHex 函數將每個字串轉換為物件 ID。
  3. 建構一個查詢,其中 _id 欄位與任何提供的物件 ID 相符.
  4. 使用 Find 和 All 方法從 MongoDB 集合中檢索所有符合的文件。

以上是如何使用 mgo 和 bson 透過物件 ID 陣列檢索 MongoDB 文件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板