订单:
{
order_id: 1,
order_time: ISODate(...),
customer_id: 456,
products: [
{
product_id: 1,
product_name: "Pencil"
},
{
product_id: 2,
product_name: "Scissors"
},
{
product_id: 3,
product_name: "Tape"
}
]
}
我有一个收藏,上面有很多文件。我想查询订购剪刀的每个客户的最新订单。
也就是说,如果有一个“ products.product_name”等于“ Scissors”,按customer_id分组,请给我完整的文档,其中“ order_time”是该组的“ max”。
要查找文档,我可以像find({ 'products.product_name' : "Scissors" })
一样,但是随后我得到了剪刀的所有订单,我只想要最新的。
所以,我正在查看聚合... Mongo的“ $ group”聚合阶段似乎要求您在sum或max或其他内容内进行某种实际的聚合。我猜想这里可以使用$match
,$group
和$sort
的某种组合,但我似乎不太能正常使用它。
有什么要关闭的
db.storcap.aggregate(
[
{
$match: { 'products.product_name' : "Scissors" }
},
{
$sort: { created_at:-1 }
},
{
$group: {
_id: "$customer_id",
}
}]
)
但这不会返回完整的文档,我不确定它是否在正确地进行排序和分组。