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

Mongo rækkefølge efter længde af array

Jeg tænkte, at du måske kunne bruge $size , men det er kun for at finde arrays af en bestemt størrelse, ikke bestilling.

Fra mongo-dokumentationen:http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24size

Du kan ikke bruge $size til at finde en række størrelser (for eksempel:arrays med mere end 1 element). Hvis du har brug for at forespørge efter et område, skal du oprette et ekstra størrelsesfelt, som du øger, når du tilføjer elementer. Indekser kan ikke bruges til $size-delen af ​​en forespørgsel, men hvis andre forespørgselsudtryk er inkluderet, kan indekser bruges til at søge efter match på den del af forespørgselsudtrykket.

Det ser ud til, at du nok ret nemt kan gøre dette med den nye aggregeringsramme, rediger: som ikke er ude endnu.http://www.mongodb.org/display/DOCS/Aggregation+Framework

Opdater Nu er Aggregation Framework ude...

> db.test.aggregate([
  {$unwind: "$answers"}, 
  {$group: {_id:"$_id", answers: {$push:"$answers"}, size: {$sum:1}}}, 
  {$sort:{size:1}}]);
{
"result" : [
    {
        "_id" : ObjectId("5053b4547d820880c3469365"),
        "answers" : [
            {
                "content" : "answer1"
            },
            {
                "content" : "2nd answer"
            }
        ],
        "size" : 2
    },
    {
        "_id" : ObjectId("5053b46d7d820880c3469366"),
        "answers" : [
            {
                "content" : "answer1"
            },
            {
                "content" : "2nd answer"
            },
            {
                "content" : "The third answer"
            }
        ],
        "size" : 3
    }
  ],
  "ok" : 1
}


  1. phpRedis-migrering til klynge og konsekvent hashing

  2. AWS Lambda og Redis klient. Hvorfor kan jeg ikke ringe tilbage?

  3. hvordan man konfigurerer forskellige ttl for hver redis cache, når man bruger @cacheable i springboot2.0

  4. 6 bedste praksis for implementering af MongoDB på Amazon EC2