recherche

Maison  >  Questions et réponses  >  le corps du texte

mongodb - Comment calculer le volume des ventes et le prix de la dernière vente à travers les enregistrements de ventes regroupés par produit ?

db.sales.insert({"商品":"上衣","销售时间":"2015-12-01 11:00","售价":1.3});
db.sales.insert({"商品":"上衣","销售时间":"2015-12-01 12:00","售价":1.4});
db.sales.insert({"商品":"裤子","销售时间":"2015-12-01 11:30","售价":2.3});
db.sales.insert({"商品":"裤子","销售时间":"2015-12-01 12:30","售价":2.4});
db.sales.insert({"商品":"鞋子","销售时间":"2015-12-01 11:00","售价":3.3});
db.sales.insert({"商品":"鞋子","销售时间":"2015-12-01 12:00","售价":3.4});
db.sales.insert({"商品":"鞋子","销售时间":"2015-12-01 12:30","售价":3.5});
db.sales.aggregate([
   { $group: { 
       _id: "$商品", 
       "销售量":{$sum:1} ,
       "最后销售时间": { $max: "$销售时间" } 
   } }
]);

Question : Comment retrouver le prix de vente correspondant à la dernière période de vente ?

漂亮男人漂亮男人2804 Il y a quelques jours753

répondre à tous(2)je répondrai

  • 高洛峰

    高洛峰2017-05-02 09:25:33

    J'espère que cela vous aidera.

    J'adore MongoDB ! Amusez-vous !

    répondre
    0
  • ringa_lee

    ringa_lee2017-05-02 09:25:33

    La direction est bonne, mais actuellement il n'existe pas de syntaxe de ce type pour obtenir le fonctionnement du "document correspondant au délai maximum de vente". En guise de nouveauté, nous avons des opérateurs comme $first/$last. Si $first s'avère être le document « dernière heure de vente », puis-je l'obtenir ? Pour atteindre cet objectif, vous pouvez d'abord trier les documents. La déclaration finale devrait donc ressembler à ceci :

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

    Afin d'être plus efficace, $sort peut être accéléré par indexation. Les index suivants sont requis :

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

    Théoriquement, les documents triés peuvent être utilisés par $group pour accélérer le processus de $group Malheureusement, la version actuelle n'a pas encore apporté les optimisations correspondantes sur ce point. Pour une optimisation correspondante, veuillez prêter attention à l'état de mise à jour du Ticket SERVER-4507.

    répondre
    0
  • Annulerrépondre