使用mongo-go-driver 過濾MongoDB 文件中的字段
MongoDB 查詢字段的關鍵功能之一是能夠過濾字段在結果中返回。這稱為場投影。
使用場投影進行查詢
mongo-go-driver 提供了多個指定場投影的選項。一種選擇是使用 findopt.Projection 函數。但是,如您所遇到的,如果未匯出投影結構中的欄位名稱,則此方法可能會失敗。要解決此問題,您可以使用以下策略:
方法1:使用匯出的欄位名稱
最直接的方法是使用匯出的欄位名稱(即,投影結構中以大寫字母開頭的欄位)。這確保了 mongo-go-driver 可以存取欄位名稱。
type Fields struct { ID int `bson:"_id"` } projection := Fields{ ID: 0, }
方法 2:使用結構標籤
或者,您可以使用結構標籤將未匯出的欄位名稱對應到對應的 MongoDB欄位
type Fields struct { _id int `bson:"_id"` } projection := Fields{ _id: 0, }
在查詢中使用投影
定義投影後,可以透過設定 SetProjection 在 FindOne 或 Find 方法中使用它選項。
filter := bson.NewDocument(bson.EC.ObjectID("_id", starterId)) result := staCon.collection.FindOne(nil, filter, options.FindOne().SetProjection(projection)).Decode(s)
使用範例bson.M
從mongo-go-driver 的更高版本開始,您也可以使用簡單的bson.M 地圖指定投影。
options.FindOne().SetProjection(bson.M{"_id": 0})
以上是如何使用 mongo-go-driver 有效過濾 MongoDB 欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!