MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mongodb si alors condition sous filtre comment faire

Après discussion dans le chat, il semble que le problème général était de savoir comment sélectionner les documents de la collection principale en fonction de 2 critères des documents historiques associés :

db.main.aggregate([
  {$lookup: {
      from: "history",
      localField: "history_id",
      foreignField: "history_id",
      as: "History"
  }},
  {$match: {
      $expr: {
        $eq: [
          false,
          {$reduce: {
              input: "$History",
              initialValue: false,
              in: {
                $or: [
                  "$$value",
                  {$and: [
                      {$eq: [
                          "$$this.user_id",
                          ObjectId("5e4a8d2d3952132a08ae5764")
                      ]},
                      {$gte: [
                          "$$this.date",
                          "$date"
                      ]}
                  ]}
                ]
              }
          }}
        ]
      }
  }}
])

Aire de jeux