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

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

在 mongo go 驅動程序中使用 DBRef

在 mongo go 驅動程序中使用 DBRef

Go
滄海一幻覺 2023-08-14 14:27:30
我想使用DBrefwithgo-mongo-driver但我找不到任何關于它的例子。我怎樣才能實現這個目標?我之前使用過 Spring Data Mongodb,您可以在類中指示 Dbref,如下所示:@DBRef 私人電子郵件地址電子郵件地址;有沒有人能舉出一個好的例子?提前致謝
查看完整描述

1 回答

?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

我之前使用過 Spring Data Mongodb,你可以在類中指定 Dbref

除非您有令人信服的理由使用DBRef?,否則您應該避免使用它,或者改用手動引用。

對于您發布的示例,您絕對應該EmailAddress首先嘗試將 的值嵌入到文檔中。使用嵌入式模型應該可以避免您為了檢索值而兩次查詢數據庫EmailAddress

type User struct?

{

? ? ID? ? ? ? ? ?primitive.ObjectID `json:"ID" bson:"_id"`

? ? UserName? ? ?string? ? ? ? ? ? ?`json:"username"`

? ? EmailAddress Email? ? ? ? ? ? ? `json:"emailAddress"`

}


type Email struct?

{

? ? ?PrivateEmail? ? ?string? ? ? `json:"private"`

? ? ?BusinessEmail? ? string? ? ? `json:"business"`

}

在某些情況下,您確實需要將相關信息存儲在單獨的文檔中,您應該使用手動參考。您可以通過將_id一個文檔的字段保存到另一文檔中作為參考來完成此操作。然后您的應用程序可以運行第二個查詢來返回相關數據。從 MongoDB v3.4+ 開始,您可以使用$lookup或$graphLookup來執行查找。

MongoDB Go 驅動程序不直接支持DBRef類型。Spring Data MongoDB 提供了一個方便的輔助方法來自動形成查詢DBRef,盡管在幕后它只是查詢數據庫兩次。

說了以上所有內容,并且存在一些您需要的特殊邊緣情況,您可以構建自己的結構,如下例所示:

type User struct?

{

? ? ID? ? ? ? ? ? ? ?primitive.ObjectID? `json:"ID" bson:"_id"`

? ? UserName? ? ? ? ?string? ? ? ? ? ? ? `json:"username"`

? ? EmailAddress? ? ?DBRef? ? ? ? ? ? ? ?`json:"emailAddress"`

}


type DBRef struct {

? ?Ref interface{}? ?`bson:"$ref"`

? ?ID? interface{}? ?`bson:"$id"`

? ?DB? interface{}? ?`bson:"$db"`

}

再次請注意,MongoDB 驅動程序不會自動解析DBRef. 驅動程序之上可能有框架或幫助程序可以提供自動引用解析(通過執行第二個查詢來查找值)。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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