从$ sort和$ first结合的文档中展开数组

时间:2016-07-31 00:23:44

标签: mongodb

我之前有一篇帖子向我展示了如何在集合中检索文档的最新版本,因为每次接收两次,所以可能存在相同的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

提前致谢

1 个答案:

答案 0 :(得分:0)

感谢@Bertrand Mantel的关注和帮助。我刚刚怀疑它。

在第4阶段,我需要添加 "goods_and_services" : {$first: "$goods_and_services"}

然后我将第5阶段添加为{$unwind: "$goods_and_services"},现在我已经获得了正确的行数。我必须$project行的正确值,但我非常接近。再次感谢