Ada solusi kotor tetapi berfungsi berdasarkan tautan ini http://www.kamsky.org/stupid-tricks-with-mongodb/ugly-way-to-parse-a-string-with-aggregation-framework Jadi, mengapa tidak?
Untuk menemukan posisi simbol dalam string, kita dapat membangun kondisi kompleks untuk memeriksa secara berurutan setiap simbol string untuk pencocokan simbol. Ini pada dasarnya mirip dengan cara kerja fungsi indexOf.
function indexOf(field, character) {
var array = [];
var maxPos = 50;
var searchStart = 0;
array[maxPos]={"$cond":{"if":{"$eq":[{"$substr":[field,maxPos,1]},character]},"then":maxPos+1,else:0}};
for ( var i=maxPos-1; i>searchStart-1; i-- ) {
array[i]={"$cond":{"if":{"$eq":[{"$substr":[field,i,1]},character]},"then":i,"else":array[i+1]}}
}
return array[searchStart];
}
Jadi, permintaan MongoDB Anda akan terlihat seperti ini:
db.images.aggregate([ <query> ,
{ $group: { _id: { $substr: ["$FileName", indexOf("$FileName", "_"), 999] }, files: { $push: "$$ROOT" } } },
{ $sort: { UploadDate : -1 } }
])