为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用mongodb中的golang从json数组中获取嵌套值

如何使用mongodb中的golang从json数组中获取嵌套值

Go
芜湖不芜 2021-09-13 20:04:01
我有下面的json我想Data从 Requirement 数组中提取基于Id. 如果"Data" = "String123"它应该将“数据”显示为 ["WED"]。我试过这个代码但无论Id.
查看完整描述

2 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

如果我猜对了,您在“clOfferMaster”集合中有一个记录,并且您正在尝试从嵌套集合“Eligibility”中获取数据。这可能不是处理数据的典型方式。


如果您按如下方式重组数据会怎样:


    {

        "ComponentId" : "SessionDayCheck",

        "ConfigData" : [ 

            "WED"

        ]

    }, 

    {

        "ComponentId" : "TransDayCheck",

        "ConfigData" : [ 

            "WED", 

            "THU"

        ]

    }, 

    {

        "ComponentId" : "SessionTransCheck",

        "ConfigData" : ""

    }

]

在这种情况下,您可以执行以下查询


c := session.DB("offerengine2").C("clOfferMaster")


var result struct {

    ConfigData []string "ConfigData"

}

err = c.Find(bson.M{"ComponentId": "SessionDayCheck"}).One(&result)

if err != nil {

    log.Fatal(err)

}


fmt.Println("Result:", result)

// Result: {[WED]} 


查看完整回答
反对 回复 2021-09-13
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

查询的结果是文档的集合。如果您将组件集合存储在一个文档中,即使您在查询中使用了组件字段,如果与过滤器匹配,结果仍将返回整个文档。

MongoDB 支持选择您想要或不想要的属性,但您不能根据它们的属性排除数组元素。
请注意,MongoDB 仅支持返回数组的一部分($slice (projection)),但这是基于索引的,并不是您真正想要的。

您必须手动检查返回文档 ( Eligibility) 的组件并搜索所需的组件。或者查看文档的内容,您应该将其拆分以将每个组件存储为单独的文档,然后您可以过滤它们并单独检索它们。


查看完整回答
反对 回复 2021-09-13
  • 2 回答
  • 0 关注
  • 309 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信