sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan får du alle samlingsnøgler, der indeholder en bestemt (streng)værdi i mongodb

Du kan gøre dette ved at omforme dataene i datakilden ved hjælp af objectToArray

Spil

db.collection.aggregate([
  {
    "$project": {
      "data": {
        "$objectToArray": "$$ROOT"
      }
    }
  },
  {
    $unwind: "$data"
  },
  {
    "$match": {
      "data.v": {
        $regex: "hello"
      }
    }
  }
])

Endnu en avanceret version her Det omformer data tilbage

db.collection.aggregate([
  {
    "$project": {
      "data": {
        "$objectToArray": "$$ROOT"
      }
    }
  },
  {
    $unwind: "$data"
  },
  {
    "$match": {
      "data.v": {
        $regex: "hello"
      }
    }
  },
  {
    $group: {//Grouping back and restructuring the data so that objectToArray will bring the original format easily.
      "_id": "$_id",
      data: {
        "$addToSet": {
          k: "$data.k",
          v: "$data.v"
        }
      }
    }
  },
  {
    "$project": {
      "data": {
        "$arrayToObject": "$data"
      }
    }
  }
])

Se dokumentationen til arrayToObject og objectToArray , derefter $regex




  1. Kom godt i gang med Python og MongoDB

  2. TypeError:callback.apply er ikke en funktion efter allowDiskUse

  3. Redis:Amazon EC2 vs Elasticache

  4. Tæt på operatør for geojson punkt returnerer fejl, når maxdistance bruges i forespørgsel