sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongodb grupper efter felt ved hjælp af $substr

Der er en beskidt, men fungerende løsning baseret på dette link http://www.kamsky.org/stupid-tricks-with-mongodb/ugly-way-to-parse-a-string-with-aggregation-framework Så hvorfor ikke?

For at finde en symbolposition i strengen kan vi bygge en kompleks betingelse for i rækkefølge at kontrollere hvert symbol i strengen for matchende symbol. Det ligner grundlæggende, hvordan indexOf-funktionen fungerer.

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]; }

Så din MongoDB-anmodning vil se sådan ud:

db.images.aggregate([ <query> ,
             { $group: { _id: { $substr: ["$FileName", indexOf("$FileName", "_"), 999] }, files: { $push: "$$ROOT" } } },
             { $sort: { UploadDate : -1 } }
        ])
 



  1. Hvilke MongoDB-brugerprivilegier har jeg brug for for at tilføje en bruger til en ny/en anden mongo-database?

  2. Få den højeste værdi af en kolonne i MongoDB

  3. Spørgsmål om safe=Sand parameter for opdatering af mongodb

  4. React Native - kan ikke importere mongoose på frontenden (men det virker fra backend)