gpt4 book ai didi

mongodb - 如何正确写嵌套的bson.M{}

转载 作者:数据小太阳 更新时间:2023-10-29 03:08:27 24 4
gpt4 key购买 nike

假设我们有以下结构:

type shop struct {
ID primitive.ObjectID `json:"_id,omitempty" bson:"_id,omitempty"`
Brands *brand `json:"brand,omitempty" bson:"brand,omitempty"`
}

type brand struct {
ID primitive.ObjectID `json:"_id,omitempty" bson:"deploymentid,omitempty"`
}

我尝试使用 findOne() 查找文档,但即使使用 MongoDB shell 有匹配结果,我也没有得到任何文档。

filter := bson.M{"brand" : bson.M{"_id" : someValue}}
var shopWithBrand shop
mycollection.findOne(ctx , filter).Decode(&shopWithBrand)

我犯了什么错误?

最佳答案

这个过滤器:

filter := bson.M{"brand" : bson.M{"_id" : someValue}}

告诉您需要具有 brand 的文档嵌入文档的字段具有单个_id值为someValue的字段 .

如果您的嵌入式文档只包含一个 _id,这实际上是可行的领域,但你的嵌入式brand将此 ID 字段映射到 deploymentid并且很可能还有其他字段(您“剥离”以最小化示例),这就是它不匹配的原因。

相反,您需要具有 brand 的文档字段是具有匹配 deployment 的文档字段以及其他字段。您可以这样表达:

filter := bson.M{"brand.deploymentid" : someValue}

关于mongodb - 如何正确写嵌套的bson.M{},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56933823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com