Halo kawan-kawan. Saya mencoba mengonversi tipe _______________ dan _______________
sql query_ terlihat seperti ini
Inilah yang saya coba untuk mongodb
cursor=mydb1.mongodbtime.aggregate([ { "$match": { "timestamp1": {"$gte": datetime.strptime("2010-01-01 00:00:00", "%Y-%m-%d %H:%M:%S"), "$lte" :datetime.strptime("2020-12-31 00:55:00", "%Y-%m-%d %H:%M:%S")} } }, { "$group": { "_id":{ "date": {"$dateToString": { "format": "%Y-%m-%d ", "date": "$timestamp1" }}, "id13":"$id13", }, "avg_id9": { "$avg": "$id9" } } }, { "$project": { "_id": 0, "day":"$_id.date", "avg_id9":1 } }, {"$sort": {"day": 1}} ]) _Tapi saya tidak mendapatkan hasil yang sama di _______________. Apa yang saya lakukan salah?Apakah ini ada hubungannya dengan pengindeksan?saya punya satu compound index di psql table timestamp1 desc,id13 asc?Saya belum punya cursor=mydb1.mongodbtime.aggregate([
{
"$match": {
"timestamp1": {"$gte": datetime.strptime("2010-01-01 00:00:00", "%Y-%m-%d %H:%M:%S"),
"$lte" :datetime.strptime("2020-12-31 00:55:00", "%Y-%m-%d %H:%M:%S")}
}
},
{
"$group": {
"_id":{
"date": {"$dateToString": { "format": "%Y-%m-%d ", "date": "$timestamp1" }},
"id13":"$id13",
},
"avg_id9": {
"$avg": "$id9"
}
}
},
{
"$project": {
"_id": 0,
"day":"$_id.date",
"avg_id9":1
}
},
{"$sort": {"day": 1}}
])
0 di cursor=mydb1.mongodbtime.aggregate([
{
"$match": {
"timestamp1": {"$gte": datetime.strptime("2010-01-01 00:00:00", "%Y-%m-%d %H:%M:%S"),
"$lte" :datetime.strptime("2020-12-31 00:55:00", "%Y-%m-%d %H:%M:%S")}
}
},
{
"$group": {
"_id":{
"date": {"$dateToString": { "format": "%Y-%m-%d ", "date": "$timestamp1" }},
"id13":"$id13",
},
"avg_id9": {
"$avg": "$id9"
}
}
},
{
"$project": {
"_id": 0,
"day":"$_id.date",
"avg_id9":1
}
},
{"$sort": {"day": 1}}
])
1 belum
Sunting. Tampaknya hasilnya sama tetapi tidak dalam urutan yang benar
Terima kasih sebelumnya
@steevej dan @Ronan_Merrick sama-sama memberikan jawaban yang bermanfaat, jadi saya tidak akan mengulangi apa pun yang mereka katakan. Saya hanya ingin memberikan saran yang mungkin berguna agar Anda memeriksa dokumentasi tingkat tinggi pada kerangka kerja agregasi
Secara konseptual panggilan ke aggregate dimulai dengan semua dokumen dalam koleksi, dan kemudian meneruskannya melalui serangkaian tahapan agregasi yang akan melakukan hal-hal seperti memfilter dokumen (dengan $match misalnya), memodifikasinya (dengan tahapan seperti $project dan $lookup atau mengubah . Keluaran dokumen dari setiap tahap diteruskan ke tahap berikutnya untuk modifikasi lebih lanjut, hingga akhir pipa, di mana dokumen apa pun yang dikeluarkan dari tahap akhir kemudian diberikan kembali ke klien
Itu sebabnya tahapan disediakan sebagai daftar - ini adalah urutan operasi yang akan diterapkan pada dokumen. Itu juga mengapa Anda perlu melakukan $match untuk memfilter dokumen yang cocok dengan kriteria WHERE Anda, sebelum melakukan $group pada dokumen yang tersisa, untuk mendapatkan rata-rata yang diterapkan ke semua dokumen, seperti yang disarankan @Ronan_Merrick
Hai @Stennie ,
Terima kasih atas balasannya
Sebenarnya saya punya koleksi followers. Saya telah meletakkan dokumen dengan user_id dan follower_id. Saya ingin mencari semua teman dari pengguna X. (Syarat Untuk teman. semua pengguna mengikuti ke pengguna X dan X mengikuti ke semua pengguna ini. )
Saya harap Anda mengerti kondisi saya
Saya telah membuat ini =>
db. berikut. agregat([
]);
Tapi tidak memenuhi syaratku. Saya telah mendapatkan semua data pengguna lain yang tidak memiliki teman dengan pengguna X saya
terima kasih