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

Jak najít konkrétní vnořené objekty bez znalosti nadřazeného klíče v mongodb

Můžete použít $objectToArray (mongoDB 3.4.4 a vyšší), $filter a $project a získejte něco takového:

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"
      }
    }
  },
])

Můžete ho vidět zde

Cílem je rozdělit objekt na pole, filtrovat jej a poté toto pole převést zpět na objekt.

Filtroval jsem na city ale jsem si jistý, že to chápete.




  1. Vytvoření objektu BSON z řetězce JSON

  2. mongodb $exists vždy vrací 0

  3. Jak nasadit otevřenou databázi edX MongoDB pro vysokou dostupnost

  4. HBase BlockCache 101