[英]Sorted aggregation with group stage returns useless $first
我的收藏是未嵌套的交易数据。 第三方每年更改一次或两次他们的架构。 我正在创建我所说的架构更改表,其中列出了事务架构及其effective_date
日期。 我需要为 Mongo 集合中的预先存在的数据初始化此表。
原始数据中的重要特征如下所示:
[_id, ..., [...], ..., g_uploaded_at, g_unique_id]
( [...]
是交易特征: Time
, Amount
等不在聚合中)
根据另一篇文章,我有一个聚合管道,它实际上为模式中的每个更改返回一行,结果中具有三个特征:
all_keys
,所有功能/标题的连接g_unique_id
,一些具有这些特征的记录g_uploaded_at
,应该是最旧/最新记录的排序日期这种聚合的结果并不一致。 回想一下,目标是使用排序和分组来定义模式更改的边界。
result = coll.aggregate([
{'$sort': {'g_uploaded_at': -1}},
{
'$project': {
'data': {'$objectToArray': "$$ROOT"},
'g_unique_id': 1,
'g_uploaded_at': 1}
},
{'$unwind': "$data"},
{'$project': {'g_uploaded_at': 1, 'g_unique_id': 1, 'key': "$data.k", '_id': 0}},
{'$sort': {'key': 1}},
{
'$group': {
'_id': "$g_unique_id",
'all_keys': {'$push': "$key"},
'g_uploaded_at': {'$first': "$g_uploaded_at"},
}
},
{
'$project': {
'all_keys': 1,
'g_uploaded_at': 1,
'all_keys_string': {
'$reduce': {
'input': "$all_keys",
'initialValue': "",
'in': {'$concat': ["$$value", "$$this"]}
}
}
}
},
{
'$group': {
'_id': "$all_keys_string",
'all_keys': {'$first': "$all_keys"},
'g_unique_id': {'$first': "$_id"},
'g_uploaded_at': {'$first': "$g_uploaded_at"},
}
},
{'$unset': "_id"},
])
如果我多次运行此操作,具有值BAZ
的功能all_keys
将(最终,继续尝试)循环遍历玩具数据集中的不同 ID 和日期(11 条记录)。
如此处所述使用$first
: A:mongo 组查询如何保留字段我是 Mongo 的新手。 也许是菜鸟的错误?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.