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

Jak agregovat vnořené vyhledávací pole v mongoose?

  • $lookup s user kolekce
  • $unwind dekonstruovat id_user pole
  • $lookup s language sběr a vrácení v languages pole
  • $map iterovat vzhled id_user.language pole
  • $reduce iterovat smyčku languages pole vrácené z kolekce, zkontrolujte podmínku, pokud language_id shodu a poté vrátí name
db.cvsubmit.aggregate([
  {
    $lookup: {
      from: "user",
      localField: "id_user",
      foreignField: "_id",
      as: "id_user"
    }
  },
  { $unwind: "$id_user" },
  {
    $lookup: {
      from: "language",
      localField: "id_user.language.language_id",
      foreignField: "_id",
      as: "languages"
    }
  },
  {
    $addFields: {
      languages: "$$REMOVE",
      "id_user.language": {
        $map: {
          input: "$id_user.language",
          as: "l",
          in: {
            _id: "$$l._id",
            level: "$$l.level",
            name: {
              $reduce: {
                input: "$languages",
                initialValue: "",
                in: {
                  $cond: [
                    { $eq: ["$$this._id", "$$l.language_id"] },
                    "$$this.name",
                    "$$value"
                  ]
                }
              }
            }
          }
        }
      }
    }
  }
])

Hřiště




  1. Mongoose dotazy na stav data nemají žádné výsledky, MongoDB Shell funguje

  2. Operátoři MongoDB $gt/$lt s cenami uloženými jako řetězce

  3. Aktualizace konkrétního klíče/hodnoty uvnitř pole pole pomocí MongoDB

  4. Přejmenujte ObjectId _id na id v jackson deserializaci s Jongo a MongoDB