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

získat relevantní informace proti hodnotě objektu v MongoDB

  • $arrayElemAt získat první prvek z dic pole
  • $objectToArray převést A objekt do pole
  • $reduce iterujte smyčku prvku nad převedeným polem a zkontrolujte podmínku, zda _id.A odpovídá datům A pak vraťte konkrétní pole,
  • proveďte stejný postup pro B a C
db.collection.aggregate([
  {
    $addFields: {
      dic: { $arrayElemAt: ["$dic", 0] }
    }
  },
  {
    $project: {
      _id: 1,
      dic: {
        A: {
          $reduce: {
            input: { $objectToArray: "$dic.data.A" },
            initialValue: "Not Found",
            in: {
              $cond: [
                { $eq: ["$$this.k", "$_id.A"] },
                "$$this.v.name",
                "$$value"
              ]
            }
          }
        },
        B: {
          $reduce: {
            input: { $objectToArray: "$dic.data.B" },
            initialValue: "Not Found",
            in: {
              $cond: [
                { $eq: ["$$this.k", "$_id.B"] },
                "$$this.v.description",
                "$$value"
              ]
            }
          }
        },
        C: {
          $reduce: {
            input: { $objectToArray: "$dic.data.C" },
            initialValue: "Not Found",
            in: {
              $cond: [
                { $eq: ["$$this.k", "$_id.C"] },
                "$$this.v.description",
                "$$value"
              ]
            }
          }
        }
      }
    }
  }
])

Hřiště




  1. jak vložit vložený dokument pomocí jarních dat mongodb mongotemplate

  2. Provádění dotazů v MongoDB s řeckými znaky pomocí Javascriptu nevrací žádné výsledky

  3. Flask-SocketIO redis předplatit

  4. Nelze přečíst vlastnost 'castForQuery' z undefined na castArrayFilters v Node.js