은 그래서 당신은 사용할 수 있습니다 이것이 가능하지
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")
}
컬렉션 : 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"
}
그래서 당신은 당신이 할 수있는 기술 내용에 따라 :
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 }
])
을
내가 말했듯이을 사용하는 것이 현명 할 것이다. 모든 것을하기 전에. 예를 들면 다음과 같습니다.
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를 수동으로 검색해야한다는 의미입니까? –
오, 외래 키가있는 두 개의 콜렉션이 있습니까? 이 경우 ['$ lookup'] (https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/)을 사용할 수 있습니다. 설명에 설명해 주시겠습니까? –
예, 확실하게 질문을 업데이트했습니다. –