在 mongo go driver 中使用 DBRef



我想将DBrefgo-mongo-driver一起使用,但我找不到任何关于它的例子。我怎样才能做到这一点? 我之前使用过Spring Data Mongodb,您可以在类中指示Dbref,例如:

@DBRef私人电子邮件地址电子邮件地址;

有没有人举出一个好榜样? 提前致谢

我以前使用过Spring Data Mongodb,你可以在类中指示Dbref

除非您有令人信服的理由使用 DBRefs,否则您应该避免使用它,或者改用手动引用。

使用您发布的示例,您绝对应该首先尝试在文档中嵌入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。驱动程序顶部可能有框架或帮助程序可以提供自动引用解析 (通过执行第二个查询来查找值( 。

相关内容

  • 没有找到相关文章

最新更新