MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Czy można spłaszczyć zapytanie wynikowe MongoDB?

Możesz użyć $project &$unwind &$group agregacja ramy, aby uzyskać wynik bliższy Twoim wymaganiom.

> 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 używane dwukrotnie, ponieważ tablica nazw jest głęboko zagnieżdżona. I będzie działać tylko wtedy, gdy neighbor atrybut jest tablicą. W twoim przykładzie jedno pole sąsiada (Malezja) nie jest tablicą



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Zainstaluj MongoDB na komputerze Mac

  2. Generuj PDF za pomocą biblioteki JasperReport i MongoDB

  3. Połącz dwa zapytania OR z operatorem AND w Mongoose

  4. Tunelowanie Node.js SSH do MongoDB przy użyciu Mongoose

  5. Połączenie odrzucone - connect(2) z rake db:seed na Mongodb