sql >> Database >  >> NoSQL >> MongoDB

Hoe specifieke geneste objecten te vinden zonder de bovenliggende sleutel te kennen in mongodb

U kunt de $objectToArray gebruiken (mongoDB 3.4.4 en hoger), $filter en $project en krijg zoiets als dit:

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

Je kunt het hier zien werken

Het idee is om het object op te splitsen in een array, het te filteren en vervolgens die array terug te converteren naar een object.

Ik heb gefilterd op city maar ik weet zeker dat je het idee snapt.




  1. Sla een dataURL op in MongoDB om er toegang toe te krijgen via lokale URL (JS)

  2. MongoDB:locale::facet::_S_create_c_locale naam niet geldig

  3. Mongodb foreach voor geneste collectie om documenten bij te werken/kopiëren naar een andere collectie

  4. MongoDB controleren of id een geldige BSON PHP is