我想推送一个对象来指定字段的名称而不是数组。我尝试了$ push,但是我失去了关于插入到数组中的字段名称的信息。 我的收藏是:Mongo推送对象
/* 1 */
{
"_id" : ObjectId("57614a7bd75df17df3013903"),
"O":"aa",
"D":"bb",
"month":1,
"year":2015,
"freq":5
}
/* 2 */
{
"_id" : ObjectId("57614a7bd75df17df3013904"),
"O":"aa",
"D":"bb",
"month":2,
"year":2015,
"freq":5
}
/* 3 */
{
"_id" : ObjectId("57614a7bd75df17df3013905"),
"O":"aa",
"D":"bb",
"month":1,
"year":2016,
"freq":5
}
我要存储对应于字段的所有频率:O和D. 这里是我的预期输出:
"_id" : ...,
"O" : "aa",
"D" : "bb",
"freq" : {
"2015" : {
"1" : 5,
"2":5
},
"2016" : {
"1" : 5
}
}
}
我尝试这样做:
db.collection.aggregate([
{
'$group':
{
_id:{"O":"$O","D":"$D","Y":"$year"},
"freq" :{$push: "$freq"}
}
},
{
'$group':
{
_id:{"O":"$O","D":"$D"},
"freq" :{$push: "$freq"}
}
})]
但我收到了一个没有年份或月份信息的数组。
谢谢
你的JSON /样品docuemt是无效的!它会抛出解析错误,因为第1行的解析错误:{^ {id:111 ----'甚至您的预期输出不是有效的JSON。 –
现在仍然无效JSON/BSON ..'错误:无法删除JSON/BSON-期待24位十六进制数字:57614a,在(2,31)'处。有了这样一个问题,你如何期望人们花时间回答? –
你把生产数据库的真实数据?你为什么不向我们展示你的mongodb集合中的真实文档?可能是你的问题对任何人都不是很清楚。更好的是你问清楚的问题 –