2 回答

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果我猜對(duì)了,您在“clOfferMaster”集合中有一個(gè)記錄,并且您正在嘗試從嵌套集合“Eligibility”中獲取數(shù)據(jù)。這可能不是處理數(shù)據(jù)的典型方式。
如果您按如下方式重組數(shù)據(jù)會(huì)怎樣:
[
{
"ComponentId" : "SessionDayCheck",
"ConfigData" : [
"WED"
]
},
{
"ComponentId" : "TransDayCheck",
"ConfigData" : [
"WED",
"THU"
]
},
{
"ComponentId" : "SessionTransCheck",
"ConfigData" : ""
}
]
在這種情況下,您可以執(zhí)行以下查詢
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貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊
查詢的結(jié)果是文檔的集合。如果您將組件集合存儲(chǔ)在一個(gè)文檔中,即使您在查詢中使用了組件字段,如果與過(guò)濾器匹配,結(jié)果仍將返回整個(gè)文檔。
MongoDB 支持選擇您想要或不想要的屬性,但您不能根據(jù)它們的屬性排除數(shù)組元素。
請(qǐng)注意,MongoDB 僅支持返回?cái)?shù)組的一部分($slice (projection)),但這是基于索引的,并不是您真正想要的。
您必須手動(dòng)檢查返回文檔 ( Eligibility
) 的組件并搜索所需的組件?;蛘卟榭次臋n的內(nèi)容,您應(yīng)該將其拆分以將每個(gè)組件存儲(chǔ)為單獨(dú)的文檔,然后您可以過(guò)濾它們并單獨(dú)檢索它們。
- 2 回答
- 0 關(guān)注
- 333 瀏覽
添加回答
舉報(bào)