इस लिंक पर आधारित एक गंदा लेकिन काम करने वाला समाधान है http://www.kamsky.org/stupid-tricks-with-mongodb/ugly-way-to-parse-a-string-with-aggregation-framework तो क्यों नहीं?
स्ट्रिंग में एक प्रतीक स्थिति खोजने के लिए, हम मिलान करने वाले प्रतीक के लिए स्ट्रिंग के प्रत्येक प्रतीक को क्रमिक रूप से जांचने के लिए एक जटिल स्थिति बना सकते हैं। यह मूल रूप से 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];
}
तो, आपका MongoDB अनुरोध इस तरह दिखेगा:
db.images.aggregate([ <query> ,
{ $group: { _id: { $substr: ["$FileName", indexOf("$FileName", "_"), 999] }, files: { $push: "$$ROOT" } } },
{ $sort: { UploadDate : -1 } }
])