Maison > Questions et réponses > le corps du texte
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 ?
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.