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

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

將 mongo 條目解析為結構體

將 mongo 條目解析為結構體

Go
慕碼人8056858 2021-11-01 10:42:10
我有具有以下架構的 mongo 數據庫{   "_id" : ObjectId("55c8526d8c16598efb5ee1e6"),   "guid" : "72811d52b48379e72c8fdd11aa09cb8b",   "blkid" : 1,   "vblkid" : 0,   "spltid" : 0,   "cmpr" : false,   "encr" : false,  "chksum" : "",  "dup" : false,  "cid" : 1,  "off" : 524508,  "len" : 524408,  "incr" : 0,  "fBackupID" : 0,  "vid" : 0,  "plugInType" : 0,   "blkType" : 0,   "alen" : 0 }我正在嘗試將這些解析為具有以下結構的結構:type VhfsBlockMD struct {    GUID       string `json:"guid"`    BlkID      int    `bson:",minsize" json:"blkid"`    VBlkID     int    `bson:",minsize" json:"vblkid"`    SpltID     int    `bson:",minsize" json:"spltid"`    Cmpr       bool   `json:"cmpr" `    Encr       bool   `json:"encr"`    Blksum     string `bson:"blksum,omitempty" json:"blksum,omitempty"`    Chksum     string `json:"chksum"`    Dup        bool   `json:"dup"`    Cid        int    `bson:",minsize" json:"cid"`    SplitLen   int    `bson:",minsize" json:"len"`    Off        int64  `bson:",minsize" json:"off"`    Incr       int    `bson:",minsize" json:"incr"`    CDup       bool   `bson:"cdup,omitempty" json:"cdup,omitempty"`    FBackupID  int    `bson:"fBackupID" json:"fBackupID"`    Vid        int    `bson:"vid" json:"vid"`    PlugInType int    `bson:"plugInType" json:"plugInType"`    BlkType    int    `bson:"blkType" json:"blkType"`    Alen       int    `bson:"alen" json:"alen"`    IsValid    int    `bson:"-" json:"-"`    Len        uint64 `bson:"-" json:"-"`}我正在使用 mgo 驅動程序。現在的問題是,在僅解析屬性后,我無法正確解析為“len”(go 結構中的 SplitLen)。len 定義為SplitLen int `bson:",minsize" json:"len"`我相信這與標簽有關。另外我想提到的是,使用相同的結構將值插入到 mongodb 中。任何幫助,將不勝感激。
查看完整描述

2 回答

?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

如果數據元素在其他表示形式(例如 json 文本或數據庫)中出現在與結構字段名稱不同的名稱下,則必須告訴字段標記中的結構字段要匹配哪個名稱。

你告訴json包來獲取/設置JSON值"len"到現場SplitLen這是由包括本在其標簽不同的名稱:json:"len"。

但是您還沒有告訴 mongo 驅動程序也使用這個字段,它很可能在您的 mongodb 中命名"Len"(或"len")。您明確排除了可以按名稱“自動匹配”的字段:

Len uint64 `bson:"-" json:"-"`

正如 Ainar-G 建議的那樣,您可以通過將"len"加到bson標簽值來指定該字段,這將強制 mgo 驅動程序也使用該SplitLen字段:

SplitLen int `bson:"len,minsize" json:"len"`

現在我看不到該Len字段的任何用途,您應該將其刪除以避免混淆,或者使用Len名稱而不是SplitLen

Len int `bson:"len,minsize" json:"len"`


查看完整回答
反對 回復 2021-11-01
?
肥皂起泡泡

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

將字段名稱也添加到 BSON 標簽中:

SplitLen int `bson:"len,minsize" json:"len"

不然好像會和Len被忽略的字段沖突。


查看完整回答
反對 回復 2021-11-01
  • 2 回答
  • 0 關注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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