2015-02-23 68 views
0

我有以下JSON如何从JSON数组利用golang从MongoDB的

我想提取的特定Data从需求阵列基于Id价值得到嵌套值。 如果"Data" = "String123"它应该显示“数据”为[“WED”]。

我想这个代码

但我不管得到的Id所有值。

回答

0

如果我找不到你,你在“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]} 
0

查询的结果是文档的集合。如果将组件集合存储在一个文档中,即使使用查询中的组件字段,结果仍然会返回整个文档(如果它与筛选器匹配)。

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

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