我有以下json
我想根据Data
从需求数组中提取特定Id
的值。
如果"Data" = "String123"
它应将“数据”显示为[“WED”]。
我试过这段代码
但无论Id
如何,我都会得到所有值。
答案 0 :(得分:0)
查询的结果是文档的集合。如果将组件集合存储在一个文档中,即使您在查询中使用组件字段,如果结果与过滤器匹配,结果仍将返回整个文档。
MongoDB支持选择您想要或不想要的属性,但您不能根据属性排除数组元素。
请注意,MongoDB仅支持返回数组的一部分($slice (projection)),但这是基于索引的,并不是您想要的。
您必须手动浏览所返回文档的组件(Eligibility
)并搜索所需的组件。或者查看文档的内容,您应该将其拆分为将每个组件存储为单独的文档,然后您可以过滤它们并单独检索它们。
答案 1 :(得分:0)
如果我说得对,你在" clOfferMaster"收集并且您尝试从嵌套集合中获取数据"资格"。这可能不是处理数据的典型方式。
如果您按如下方式重组数据会怎样:
[
{
"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]}