【发布时间】:2017-12-31 22:49:49
【问题描述】:
我正在尝试使用 mongo 的聚合框架根据时间戳对集合进行分组,并使用 $out 将其输出到新集合。抱歉,我是 Mongo 的新手
我的收藏中有以下 JSON 结构
{
"_id" : "1",
"parent" : [
{
"child" : {
"child_id" : "1",
"timestamp" : ISODate("2010-01-08T17:49:39.814Z")
}
}
]
}
这是我一直在尝试的
db.mycollection.aggregate([
{ $project: { child_id: '$parent.child.child_id', timestamp: '$parent.child.timestamp' }},
{ $group: { cid: '$child_id', ts: { $max: '$timestmap'} }},
{ $out : 'mycollectiongrouped'}
]))
但是得到这个错误。任何想法,我想我可能不正确地使用该项目。
[thread1] 错误:命令失败:{ “好”:0, "errmsg" : "组聚合字段 'cid' 必须定义为对象内的表达式", “代码”:15951 } :聚合失败: _getErrorWithCode@src/mongo/shell/utils.js:25:13
【问题讨论】:
-
您缺少
_id字段。您还应该考虑使用有效的日期对象。 -
谢谢。关于我使用 ISODate() 的验证日期对象。将适当地编辑问题
-
“父”字段总是一个元素数组吗?你的
mongod是什么版本? -
是的,有多个孩子。我希望根据最大时间戳对孩子进行分组,因此我为每个父母获得一个具有最大时间戳的孩子。版本是 3.2.7
标签: mongodb mongodb-query aggregation-framework