亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用官方的 mongo-go-driver 從 mongo 文檔中過濾字段

如何使用官方的 mongo-go-driver 從 mongo 文檔中過濾字段

Go
德瑪西亞99 2023-05-04 17:39:53
如何使用 mongo-go-driver 過濾字段。嘗試使用 findopt.Projection 但沒有成功。type fields struct {    _id int16}s := bson.NewDocument()filter := bson.NewDocument(bson.EC.ObjectID("_id", starterId))var opts []findopt.Oneopts = append(opts, findopt.Projection(fields{    _id: 0,}))staCon.collection.FindOne(nil, filter, opts...).Decode(s)最后,我想壓制字段“_id”。但是文件沒有改變。
查看完整描述

1 回答

?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

編輯:隨著 mongo-go 驅動程序的發展,可以使用bson.M如下簡單的方式指定投影:

options.FindOne().SetProjection(bson.M{"_id":?0})

原始(舊)答案如下。


它對您不起作用的原因是因為該字段fields._id未導出,因此,沒有其他包可以訪問它(只有聲明包)。

您必須使用導出的字段名稱(以大寫字母開頭),例如ID,并使用結構標簽將其映射到 MongoDB_id字段,如下所示:

type?fields?struct?{
????ID?int?`bson:"_id"`}

現在使用投影執行查詢:


projection := fields{

? ? ID: 0,

}

result := staCon.collection.FindOne(

? ? nil, filter, options.FindOne().SetProjection(projection)).Decode(s)

請注意,您也可以使用 abson.Document作為投影,您不需要自己的結構類型。例如,以下內容相同:


projection := bson.NewDocument(

? ? bson.EC.Int32("_id", 0),

)

result := staCon.collection.FindOne(

? ? nil, filter, options.FindOne().SetProjection(projection)).Decode(s)


查看完整回答
反對 回復 2023-05-04
  • 1 回答
  • 0 關注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號