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]}
TA贡献1784条经验 获得超2个赞
查询的结果是文档的集合。如果您将组件集合存储在一个文档中,即使您在查询中使用了组件字段,如果与过滤器匹配,结果仍将返回整个文档。
MongoDB 支持选择您想要或不想要的属性,但您不能根据它们的属性排除数组元素。
请注意,MongoDB 仅支持返回数组的一部分($slice (projection)),但这是基于索引的,并不是您真正想要的。
您必须手动检查返回文档 ( Eligibility
) 的组件并搜索所需的组件。或者查看文档的内容,您应该将其拆分以将每个组件存储为单独的文档,然后您可以过滤它们并单独检索它们。
- 2 回答
- 0 关注
- 309 浏览
添加回答
举报