sql >> Database >  >> NoSQL >> MongoDB

Mongodb als dan voorwaarde onder filter hoe te maken

Na discussie in de chat leek het algemene probleem te zijn hoe documenten uit de hoofdcollectie te selecteren op basis van 2 criteria van de gerelateerde geschiedenisdocumenten:

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

Speeltuin




  1. Vergelijking van memcache, redis en ehcache als gedistribueerd caching-framework

  2. mangoest doorgeven als argument aan een functie

  3. Ruby groep hashes op waarde van sleutel

  4. Een collectie bijwerken vanuit een andere database