Rumah > Soal Jawab > teks badan
Saya baru menggunakan MongoDB. Saya mahu menggunakan match untuk mendapatkan hanya rekod antara 2 tahun lepas. Adakah terdapat cara untuk melakukan ini tanpa pengekodan keras?
Sebagai contoh, tahun ialah 2023. Tetapi tahun terkini yang dicatatkan dalam koleksi saya ialah 2021. Saya ingin mendapatkan My Collectionrekod dari 2 tahun lepas, bukan tahun semasa. Jadi julatnya ialah 2019-2021, bukannya 2021-2023.
Adakah terdapat cara untuk melakukan ini tanpa pengekodan keras tahun menjadi rentetan?
Saya ingin mendapatkan maklumat ini supaya saya boleh menggunakannya di peringkat seterusnya
Pada masa ini saya mempunyai ini, hardcoded
{ $match: { fechaOrden: { $gte: ISODate("2018-01-01"), $lt: ISODate("2020-02-01"), }, }, }, ] ```
P粉1460805562024-01-30 13:18:01
Anda boleh menggunakan $setWindowFields
来抓取文档近2年的记录。然后,使用 $sort
+ $limit
untuk mencari rekod terkini dalam keseluruhan koleksi dan mengembalikan rekod yang berkaitan dari 2 tahun lepas.
db.collection.aggregate([ // compute latest records in 2 years { $setWindowFields: { sortBy: { dt: 1 }, output: { recentRecords: { $push: "$$ROOT", window: { range: [ -2, 0 ], unit: "year" } } } } }, // find latest records in whole collection { "$sort": { dt: -1 } }, { $limit: 1 }, // cosmetics { "$unwind": "$recentRecords" }, { "$replaceRoot": { "newRoot": "$recentRecords" } } ])