我之前有一篇帖子向我展示了如何在集合中检索文档的最新版本,因为每次接收两次,所以可能存在相同的transaction_reference。 (old post)
既然我已经对其进行了整理,我想{i}集合中的文档到订单项,并且无法在那里使用$unwind
来解决这个问题。< / p>
到目前为止我的脚本:
$first
第5阶段 - 需要展开交易
我现在想要将db.datawarehouse.aggregate(
// Pipeline
[
// Stage 1 - Narrow down set to specific document type
{
$match: {
"object_class" : "Goods & Services Transaction",
"object_type": "Transaction",
"object_origin_category" : "Bookkeeping"
}
},
// Stage 2 - Narrow down by transaction date to this fiscal year
{
$match: {
"transaction_date" : {$gte: "2016-04-01"},
"transaction_date" : {$lt: "2016-08-01"},
}
},
// Stage 3 - Apply a sort so I can select latest version of document
{
$sort: {
"transaction_reference":1,
"object_creation_date": -1
}
},
// Stage 4 - get transaction header information of only latest version of document
{
$group: {
_id: "$transaction_reference",
"party_uuid" : {$first: "$party_uuid"},
"transaction_date" : {$first: "$transaction_date"},
"transaction_net_value" : {$first: "$transaction_net_value"},
"object_category" : {$first: "$object_category"},
"transaction_status" : {$first: "$transaction_status"},
"object_origin_category" : {$first: "$object_origin_category"},
"object_origin" : {$first: "$object_origin"},
"customer" : {$first: "$party.customer.customer_name"}
}
}
]
);
应用于名为$unwind
的数组上的集合,但无法弄清楚如何。我对此有点生疏,多年来没有做Mongo的事情。
下面的示例文档。在上面链接的另一篇文章中还有另外两个文档示例。
goods_and_services
提前致谢
答案 0 :(得分:0)
感谢@Bertrand Mantel的关注和帮助。我刚刚怀疑它。
在第4阶段,我需要添加
"goods_and_services" : {$first: "$goods_and_services"}
然后我将第5阶段添加为{$unwind: "$goods_and_services"}
,现在我已经获得了正确的行数。我必须$project
行的正确值,但我非常接近。再次感谢