mongodb - 製品ごとにグループ化された販売記録から、最新の販売の販売量と価格を計算するにはどうすればよいですか?
漂亮男人
漂亮男人 2017-05-02 09:23:33
0
2
729
リーリー リーリー

質問: 前回の販売時間に対応する販売価格を見つけるにはどうすればよいですか?

漂亮男人
漂亮男人

全員に返信(2)
小葫芦

これがお役に立てば幸いです。

MongoDB を愛してください!楽しんでください!

いいねを押す +0
左手右手慢动作

方向性は正しいのですが、現時点では「最大販売時間に相当するドキュメント」の操作を取得するような構文はありません。代わりに、$first/$last のような演算子があります。 $first がたまたま「最終販売時間」ドキュメントである場合、それを取得できますか?この目標を達成するには、まずドキュメントを並べ替えます。したがって、最後のステートメントは次のようになります: $first/$last这样的操作符。如果让$first正好就是"最后销售时间"那个文档,是不是就可以取到了呢?为了达到这个目的,可以先对文档进行排序。所以最终的语句应该是这样:

db.sales.aggregate([
    {$sort: {"商品": 1, "销售时间": -1}},
    {$group: {_id: "$商品", "销售量": {$sum: 1}, "最后销售时间": {$first: "$销售时间"}, "最后售价": {$first: "$售价"}}}
]);

为了效率更高,$sort可以用上索引来加速,需要以下索引:

db.sales.createIndex({"商品": 1, "销售时间": -1})

理论上,排序之后的文档可以被$group利用而加速$group リーリー

より効率的にするには、インデックスを作成することで $sort を高速化できます。 #🎜🎜# リーリー #🎜🎜#理論的には、並べ替えられたドキュメントを $group で使用して $group のプロセスを高速化できますが、残念ながら、これは現在のバージョンでは行われていません。それに応じて最適化します。対応する最適化のため、チケット SERVER-4507 の更新ステータスに注意してください。 #🎜🎜#
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート