【发布时间】:2018-06-06 11:40:39
【问题描述】:
我有以下收藏:
{
TariffId: 0101H01,
RoomId: 01H01,
HotelId: H01,
Price: 180,
... //other fields
},
{
TariffId: 0201H01,
RoomId: 01H01,
HotelId: H01,
Price: 120
}
{
TariffId: 0301H01,
RoomId: 02H01,
HotelId: H01,
Price: 100
... //other fields
}
我想为每个 HotelId 输出最低价格,并确切知道它与哪个 RoomId 和 TariffId 以及所有其他字段相关。结果应该是:
{
TariffId: 0201H01,
RoomId: 01H01,
HotelId: H01,
Price: 120
}
{
TariffId: 0301H01,
RoomId: 02H01,
HotelId: H01,
Price: 100
... //other fields
}
我试过了:
db.collection.aggregate{
{$group: {_id :{ RoomId: "$RoomId", tariffId: "$_id"} , HotelId:{$first: "$HotelId"} , Price: {$min: "$Price" }}},
{$group: {_id : "$HotelId", RoomId: {$first:"$RoomId"}, tariffId: {$first: "$_id"} , Price: {$min: "$Price" }}}
}
但是结果不正确。第一个错误地将关税Idm0101H01 分配给最低价格:120。这是我得到的:
{
TariffId: 0101H01,
RoomId: 01H01,
HotelId: H01,
Price: 100
... //other fields
}
它应该是:
{
TariffId: 0301H01,
RoomId: 02H01,
HotelId: H01,
Price: 100
... //other fields
}
如何使这个查询有效?
【问题讨论】:
标签: javascript mongodb meteor aggregation-framework