Saya akan bentangkan kes tersebut dahulu supaya semua orang faham maksud saya:
/a/1190000004157112
Pautan di atas adalah pertanyaan sqlgroup biasa, tetapi masalah yang saya hadapi sekarang ialah menggunakan mongo untuk melakukan pertanyaan kumpulan
Pertanyaan pengagregatan benar-benar membunuh saya Berikut adalah data simulasi:
(Tolong maafkan data saya, dia tidak dihalang dan bebas)
{
"_id" : ObjectId("590c15751f70bd329f8a972d"),
"_class" : "com.birdnest.model.AppPublish",
"user" : "admin",
"deviceType" : "nurse",
"version" : "1.1。2。2",
"message" : "范德萨312313213213范德萨",
"creation" : ISODate("2017-05-05T06:02:29.300Z")
}
{
"_id" : ObjectId("590c15751f70bd329f8a972e"),
"_class" : "com.birdnest.model.AppPublish",
"user" : "admin",
"deviceType" : "nurse",
"version" : "1.1。2。2",
"message" : "范德萨312313213213范德萨",
"creation" : ISODate("2017-05-05T06:02:29.447Z")
}
{
"_id" : ObjectId("590c157b1f70bd329f8a972f"),
"_class" : "com.birdnest.model.AppPublish",
"user" : "admin",
"deviceType" : "bed",
"version" : "1.1。2。2",
"message" : "范1123德萨312313213213范德萨",
"creation" : ISODate("2017-05-05T06:02:35.731Z")
}
{
"_id" : ObjectId("590c157c1f70bd329f8a9730"),
"_class" : "com.birdnest.model.AppPublish",
"user" : "admin",
"deviceType" : "bed",
"version" : "1.1。2。2",
"message" : "范1123德萨312313213213范德萨",
"creation" : ISODate("2017-05-05T06:02:36.164Z")
}
{
"_id" : ObjectId("590c158a1f70bd329f8a9733"),
"_class" : "com.birdnest.model.AppPublish",
"user" : "admin",
"deviceType" : "room",
"version" : "1.1.112",
"message" : "范1123德萨312313213213范德萨",
"creation" : ISODate("2017-05-05T06:02:50.082Z")
}
{
"_id" : ObjectId("590c158a1f70bd329f8a9734"),
"_class" : "com.birdnest.model.AppPublish",
"user" : "admin",
"deviceType" : "room",
"version" : "1.1.112",
"message" : "范1123德萨312313213213范德萨",
"creation" : ISODate("2017-05-05T06:02:50.238Z")
}
Keperluan adalah seperti ini
Klasifikasikan mengikut jenis peranti dan dapatkan nombor versi terkini setiap kategori
Result yang saya nak macam ni
/* 1 */
{
"deviceType" : "bed",
"version" :"1.1.112")
}
/* 2 */
{
"deviceType" : "room",
"version" :"1.1.112")
}
/* 3 */
{
"deviceType" : "nurse",
"version" : "1.1.112")
}
Pernyataan berikut ditulis oleh saya sendiri, tetapi terdapat banyak masalah
Walaupun saya melakukan apa yang saya tulis, hasil yang diingini tidak dapat dipaparkan
db.appPublish.aggregate(
{$group : {_id :"$deviceType",creation : {$max : "$creation"}}}
);
1._id tidak boleh dipetakan ke objek
2.versi tidak boleh ditulis dalam kumpulan
Saya benar-benar tidak faham sintaks ini
Hasilnya
/* 1 */
{
"_id" : "bed",
"creation" : ISODate("2017-05-05T06:02:44.750Z")
}
/* 2 */
{
"_id" : "room",
"creation" : ISODate("2017-05-05T06:02:50.397Z")
}
/* 3 */
{
"_id" : "nurse",
"creation" : ISODate("2017-05-05T06:02:29.447Z")
}
_id
sudah tentu tidak dipetakan kepada_id
sebenar_id
di sini merujuk kepada kuncigroup
.Saya tidak tahu apakah hubungan antara
versi
dancreation
anda adalahcreation
Dokumen yang agak besar mestilahversi
Adakah ia agak baharu? Jika syarat ini benar, anda boleh melakukan ini:_id
当然映射不到真正的_id
上,这里的_id
指的是group
的key。不清楚你的
version
和creation
是什么关系,creation
比较大的文档version
一定是比较新吗?如果这个条件成立的话,可以这样做:$first
即group
之后取第一个元素。而事先已经按creation
rrreee$first
ialah elemen pertama selepasgroup
. Unsur telah diisih mengikutpenciptaan
terlebih dahulu, jadi yang pertama ialah elemen terkini. 🎜