sql >> Databáze >  >> NoSQL >> MongoDB

Mongo pořadí podle délky pole

Myslel jsem, že byste mohli použít $size , ale to je pouze k nalezení polí určité velikosti, nikoli řazení.

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

$size nemůžete použít k nalezení rozsahu velikostí (například:pole s více než 1 prvkem). Pokud se potřebujete dotazovat na rozsah, vytvořte další pole velikosti, které zvýšíte při přidávání prvků. Indexy nelze použít pro část $velikost dotazu, i když jsou-li zahrnuty jiné výrazy dotazu, lze k vyhledání shod v této části výrazu dotazu použít indexy.

Vypadá to, že to pravděpodobně docela snadno zvládnete pomocí nového agregačního rámce, upravit: který ještě nevyšel.http://www.mongodb.org/display/DOCS/Aggregation+Framework

Aktualizovat Nyní je agregační rámec venku...

> 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. MongoDB - Vytvořte zálohu

  2. MongoDB findOneAndUpdate()

  3. Rychlejší metoda pro přesun dat redis do MySQL

  4. Kontrola, zda v mongodb existuje index