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: "$销售时间" }
} }
]);
问题:如何求最后销售时间对应的售价?
Semoga ini membantu.
Sayangi MongoDB! Selamat Berseronok!
Arahnya betul, tetapi pada masa ini tiada sintaks sedemikian untuk mendapatkan operasi "dokumen yang sepadan dengan masa jualan maksimum". Sebagai kelainan, kami mempunyai pengendali seperti
$first
/$last
. Jika$first
menjadi dokumen "masa jualan terakhir", bolehkah saya mendapatkannya? Untuk mencapai matlamat ini, anda boleh mengisih dokumen terlebih dahulu. Jadi kenyataan akhir sepatutnya seperti ini:Untuk menjadi lebih cekap,
$sort
boleh dipercepatkan dengan pengindeksan Indeks berikut diperlukan:Secara teorinya, dokumen yang diisih boleh digunakan oleh
$group
untuk mempercepatkan proses$group
Malangnya, tiada pengoptimuman yang sepadan untuk titik ini dalam versi semasa. Untuk pengoptimuman yang sepadan, sila beri perhatian kepada status kemas kini Tiket SERVER-4507.