我有以下数据结构:
{
"_id" : ObjectId("4e96f771e016b98aa63d88c9"),
"goals" : {
"4809" : {
"VisitsBeforeGoal" : 12,
"pagesBeforeGoal" : 16
},
"4810" : {
"VisitsBeforeGoal" : 2,
"pagesBeforeGoal" : 6
},
"4811" : {
"VisitsBeforeGoal" : 3,
"pagesBeforeGoal" : 8
}
},
"totalPages" : 246,
"totalVisits" : 114
}
4809,4810和4811是不知道的goalID,例如动态的。
现在我想要的是在每个目标和“pagesBeforeGoal”以及一系列目标上获得“VisitsBeforeGoal”的总和。类似的东西:
{
goals:[
{
"goalID" : 4809,
"VisitsBeforeGoal" : 245,
"pagesBeforeGoal" : 632,
"sum" : 45,
}
]
}
我似乎无法弄清楚如何进入每个子文档,因为我不知道goalID。我尝试了类似“目标。$ .VisitsBeforeGoal”,但这似乎没有用。
答案 0 :(得分:0)
您的数据结构存在问题。为了使goals.$.VisitsBeforeGoal
有效,您需要一个数组。所以你的结构必须是
"goals" : [ {
"id" : 4809,
"VisitsBeforeGoal" : 12,
"pagesBeforeGoal" : 16
},
{
"id" : 4810,
"VisitsBeforeGoal" : 2,
"pagesBeforeGoal" : 6
},
{
"id" : 4811,
"VisitsBeforeGoal" : 3,
"pagesBeforeGoal" : 8
}
]
使用动态键不是一个好选择。如果你有机会改变你的结构,我会建议你改变它。