MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongodb групира по поле с помощта на $substr

Има мръсно, но работещо решение, базирано на тази връзка 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 } }
        ])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Запитване на размер на вътрешния масив в MongoDB

  2. MongoDB - Създаване на връзка

  3. Преданият аргумент трябва да бъде единичен низ от 12 байта

  4. MongoDb сериализира генерични типове (класове)

  5. MongoDB изтрива много бавно