sql >> Databasteknik >  >> NoSQL >> MongoDB

Filtrera arrayer i mongodb

  • $map att upprepa loop av all_users array
  • $cond kontrollera villkoret om id är i valda användares id returnera sedan "ja" annars "nej" i selected fältet
  • $mergeObject för att slå samman aktuellt användarobjekt med ovan selected fältet
db.collection.aggregate([
  {
    $project: {
      all_users: {
        $map: {
          input: "$all_users",
          in: {
            $mergeObjects: [
              "$$this",
              {
                selected: {
                  $cond: [
                    { $in: ["$$this.id", "$selected_users.id"] },
                    "yes",
                    "no"
                  ]
                }
              }
            ]
          }
        }
      }
    }
  }
])

Lekplats



  1. 3 sätt att returnera distinkta värden i MongoDB

  2. MongoDB InvalidDocument:Kan inte koda objekt

  3. MongoDB samlar fält utan att känna till alla fält innan

  4. MongoDB &Mongoose kommer åt en databas medan de autentiseras mot en annan (NodeJS, Mongoose)