だから、このすべてが1つのコレクションにあった場合に使用できます。これができないあなたの質問を更新した後
db.Order.aggregate([
{$sort: {_id: -1}},
{$group: {
_id: "$item",
firstId: {$first: "$_id"}
}
},
{$sort: {firstId: -1}},
{ $limit: 4 }
])
。コレクションorder
{
"_id" : ObjectId("5a25361a38f4fb1fc057bb95"),
"item" : ObjectId("5a2535d238f4fb1fc057bb92"),
"date_added" : ISODate("2017-12-04T11:48:42.610+0000")
}
{
"_id" : ObjectId("5a25369a38f4fb1fc057bb9b"),
"item" : ObjectId("5a25367c38f4fb1fc057bb98"),
"date_added" : ISODate("2017-12-04T11:50:50.569+0000")
}
{
"_id" : ObjectId("5a254de038f4fb1fc057bba9"),
"item" : ObjectId("5a254d7438f4fb1fc057bb9e"),
"date_added" : ISODate("2017-12-04T13:30:08.148+0000")
}
{
"_id" : ObjectId("5a254e1f38f4fb1fc057bbb2"),
"item" : ObjectId("5a254d8938f4fb1fc057bba1"),
"date_added" : ISODate("2017-12-04T13:31:38.038+0000")
}
{
"_id" : ObjectId("5a254e6438f4fb1fc057bbb5"),
"item" : ObjectId("5a254d9e38f4fb1fc057bba4"),
"date_added" : ISODate("2017-12-04T13:32:20.244+0000")
}
:
db.order.aggregate([
{$sort: {_id: -1}},
{
$lookup:
{
from: "item",
localField: "item",
foreignField: "_id",
as: "items"
}
},
{ $unwind: "$items"},
{
$group:
{
_id: "$items.name",
orderId: {$first: "$_id"},
itemId: {$first: "$item"},
date_added: {$first: "$date_added"},
itemName: {$first: "$items.name"},
itemPrice: {$first: "$items.price"},
}
},
{$sort: {orderId: -1}},
{ $limit: 4 }
])
:
item
{
"_id" : ObjectId("5a2535d238f4fb1fc057bb92"),
"name" : "mouse",
"price" : "50"
}
{
"_id" : ObjectId("5a25367c38f4fb1fc057bb98"),
"name" : "keyboard",
"price" : "100"
}
{
"_id" : ObjectId("5a254d7438f4fb1fc057bb9e"),
"name" : "monitor",
"price" : "500"
}
{
"_id" : ObjectId("5a254d8938f4fb1fc057bba1"),
"name" : "mouse",
"price" : "15"
}
{
"_id" : ObjectId("5a254d9e38f4fb1fc057bba4"),
"name" : "headphones",
"price" : "110"
}
ですから、あなたがこれを行うことができます説明したものに基づいて
コレクション:だから、私は次のように作成した例を複製します
私が言ったように、$match
を実行してください。このように例:
db.order.aggregate([
{ $match: {"date_added" : {$gte: ISODate("2017-12-04T11:48:43.610+0000")}}},
{$sort: {_id: -1}},
{
$lookup:
{
from: "item",
localField: "item",
foreignField: "_id",
as: "items"
}
},
{ $unwind: "$items"},
{
$group:
{
_id: "$items.name",
orderId: {$first: "$_id"},
itemId: {$first: "$item"},
date_added: {$first: "$date_added"},
itemName: {$first: "$items.name"},
itemPrice: {$first: "$items.price"},
}
},
{$sort: {orderId: -1}},
{ $limit: 4 }
])
アドバイスをいただきありがとうございます!ちなみに、私のアイテムフィールドは実際にはItemというスキーマに移入できる_idです。私がこの作業をしている間、私は人がいないので、この操作の後にこれらの4つの_idsを手動で検索しなければならないのでしょうか? –
ああ、あなたは2つのコレクションを持っています。この場合、['$ lookup'](https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/)を使うことができます。あなたの説明でそれを説明できますか? –
はい、確かに質問を更新しました。 –