sql >> Database >  >> NoSQL >> MongoDB

Mongo-volgorde op lengte van array

Ik dacht dat je misschien $size . zou kunnen gebruiken , maar dat is alleen om arrays van een bepaalde grootte te vinden, niet om te bestellen.

Uit de mongo-documentatie:http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24size

U kunt $size niet gebruiken om een ​​reeks groottes te vinden (bijvoorbeeld:arrays met meer dan 1 element). Als u naar een bereik moet zoeken, maakt u een veld met een extra grootte dat u verhoogt wanneer u elementen toevoegt. Indexen kunnen niet worden gebruikt voor het $size-gedeelte van een zoekopdracht, maar als er andere zoekexpressies zijn opgenomen, kunnen indexen worden gebruikt om te zoeken naar overeenkomsten voor dat deel van de query-expressie.

Het lijkt erop dat je dit waarschijnlijk vrij gemakkelijk kunt doen met het nieuwe aggregatieraamwerk, edit: die nog niet uit is.http://www.mongodb.org/display/DOCS/Aggregation+Framework

Bijwerken Nu is het aggregatieraamwerk uit...

> 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. sleutel invoegen in redis

  2. Redis versus RabbitMQ als een gegevensmakelaar / berichtensysteem tussen Logstash en elasticsearch

  3. MongoDB $replaceAll

  4. Json importeren uit bestand in mongoDB met behulp van mongoimport