在 mongo go 驱动程序中使用 DBRef
Using DBRef in mongo go driver
我想将 DBref
与 go-mongo-driver
一起使用,但找不到任何相关示例。我怎样才能做到这一点?
我之前使用 Spring 数据 Mongodb,您可以在 class 中指示 Dbref,例如:
@DBRef private EmailAddress emailAddress;
有谁能举个例子吗?
提前致谢
I worked with Spring Data Mongodb before and you can indicate Dbref inside a class
除非您有令人信服的理由改用 DBRefs you should avoid it, or use manual references。
对于您发布的示例,您绝对应该首先尝试在文档中嵌入 EmailAddress
的值。使用嵌入式模型应该可以避免您为了检索 EmailAddress
值而查询数据库两次。另见 Embedded Data Models。
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"`
}
在某些情况下,您确实需要将相关信息存储在单独的文档中,您应该使用 manual references. You can do this by saving the _id
field of one document in another document as a reference. Then your application can run a second query to return the related data. Since MongoDB v3.4+, you can use either $lookup or $graphLookup 来执行查找。
MongoDB Go driver 不直接支持 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
。驱动程序之上可能有框架或助手,可以提供自动引用解析(通过执行第二个查询查找值)。
我想将 DBref
与 go-mongo-driver
一起使用,但找不到任何相关示例。我怎样才能做到这一点?
我之前使用 Spring 数据 Mongodb,您可以在 class 中指示 Dbref,例如:
@DBRef private EmailAddress emailAddress;
有谁能举个例子吗? 提前致谢
I worked with Spring Data Mongodb before and you can indicate Dbref inside a class
除非您有令人信服的理由改用 DBRefs you should avoid it, or use manual references。
对于您发布的示例,您绝对应该首先尝试在文档中嵌入 EmailAddress
的值。使用嵌入式模型应该可以避免您为了检索 EmailAddress
值而查询数据库两次。另见 Embedded Data Models。
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"`
}
在某些情况下,您确实需要将相关信息存储在单独的文档中,您应该使用 manual references. You can do this by saving the _id
field of one document in another document as a reference. Then your application can run a second query to return the related data. Since MongoDB v3.4+, you can use either $lookup or $graphLookup 来执行查找。
MongoDB Go driver 不直接支持 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
。驱动程序之上可能有框架或助手,可以提供自动引用解析(通过执行第二个查询查找值)。