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

我有下面的json

我想Data从 Requirement 数组中提取基于Id. 如果"Data" = "String123"它应该将“数据”显示为 ["WED"]。

我试过这个代码

但无论Id.


芜湖不芜
浏览 310回答 2
2回答

蝴蝶刀刀

如果我猜对了,您在“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]} 

一只斗牛犬

查询的结果是文档的集合。如果您将组件集合存储在一个文档中,即使您在查询中使用了组件字段,如果与过滤器匹配,结果仍将返回整个文档。MongoDB 支持选择您想要或不想要的属性,但您不能根据它们的属性排除数组元素。请注意,MongoDB 仅支持返回数组的一部分($slice (projection)),但这是基于索引的,并不是您真正想要的。您必须手动检查返回文档 ( Eligibility) 的组件并搜索所需的组件。或者查看文档的内容,您应该将其拆分以将每个组件存储为单独的文档,然后您可以过滤它们并单独检索它们。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go