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

Je možné zploštit dotaz na výsledek MongoDB?

Můžete použít $project &$unwind &$group z agregace rámec, aby se výsledek přiblížil vašim požadavkům.

> db.countries.aggregate({$project:{a:'$data.country.neighbor.name'}},
                         {$unwind:'$a'},
                         {$unwind:'$a'},
                         {$group:{_id:'a',res:{$addToSet:'$a'}}})
  {
    "result" : [
        {
            "_id" : "a",
            "res" : [
                "Colombia",
                "Malaysia",
                "Switzerland",
                "Costa Rica",
                "Austria"
            ]
        }
    ],
    "ok" : 1
}

$unwind použito dvakrát, protože pole jmen je vnořeno hluboko. A bude fungovat pouze v případě, že neighbor atribut je pole. Ve vašem příkladu jedno sousední pole (Malajsie) není pole



  1. Mongoose unshift findAndUpdateById

  2. Průnik dvou nebo více seřazených množin

  3. MongoDB findAndModify. Je to opravdu atomové? Pomozte napsat řešení pro uzavřenou aktualizaci

  4. Nastavte Mongo Timeout v Spring Boot