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

Jak znaleźć określone obiekty zagnieżdżone bez znajomości klucza nadrzędnego w mongodb

Możesz użyć $objectToArray (mongoDB 3.4.4 i nowsze), $filter i $project i zdobądź coś takiego:

db.collection.aggregate([
  {
    $project: {
      obj: {
        $objectToArray: "$info"
      }
    }
  },
  {
    $project: {
      _id: 0,
      obj: {
        $filter: {
          input: "$obj",
          as: "item",
          cond: {
            $eq: [
              "$$item.v.city",
              "NY"
            ]
          }
        }
      }
    }
  },
  {
    $project: {
      info: {
        $arrayToObject: "$obj"
      }
    }
  },
])

Możesz zobaczyć, jak działa

Pomysł polega na podzieleniu obiektu na tablicę, przefiltrowaniu go, a następnie przekształceniu tej tablicy z powrotem w obiekt.

Filtrowałem według city ale jestem pewien, że masz pomysł.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak stworzyć schemat mangusty z tablicą obiektów

  2. Usuń zagnieżdżone pola ze wszystkich/wielu dokumentów w kolekcji - NodeJS + MongoDB

  3. Śledzenie wykorzystania pamięci MongoDB

  4. Proste zapytanie prefiksowe Mongodb z wyrażeniem regularnym i sortowaniem jest wolne

  5. Wybierz Max() z group by w mongodb