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

Jak získat všechny klíče kolekce, která obsahuje určitou (String) hodnotu v mongodb

Můžete to udělat změnou tvaru dat ve zdroji dat pomocí objectToArray

Hrát

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

Další pokročilá verze zde Přetváří data zpět

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

Podívejte se do dokumentace arrayToObject a objectToArray a poté $regex




  1. Míchání PostgreSQL a MongoDB (jako backendy Django)

  2. Jak uložit tabulku s konkrétním sloupcem by měla být uložena v poli a načíst ji v Angularjs (Mean Stack)

  3. Nelze se připojit k místní mongoDB z Java

  4. BsonSerializationException nastane, pokud název prvku končí tečkou