MongoDB aggregate group min auf isodate funktioniert nicht

herzig

Neuer Benutzer
Beiträge
3
Hallo,
ich hab ein Problem mit einer MongoDB Query.

Daten
Code:
[
  {
    _id: ObjectId("5af3107a40005af310aa8b50"),
    jobs: [
      {
        created: ISODate("2024-07-17T05:27:29.071Z"),
        created_str: "2024-07-17T05:27:29.071Z",
        progress: 3
      },
      {
        created: ISODate("2024-07-19T08:52:35.771Z"),
        created_str: "2024-07-19T08:52:35.771Z",
        progress: 0
      },
      {
        progress: 0,
        created: ISODate("2024-07-19T08:53:11.566Z"),
        created_str: "2024-07-19T08:53:11.566Z"
      }
    ]
  }
]

Abfrage
Code:
db.collection.aggregate([
  {
    "$unwind": "$jobs"
  },
  {
    "$group": {
      "_id": "$_id",
      "min": {
        "$min": {
          "$cond": [
            {
              "$eq": [
                "$jobs.progress",
                3
              ]
            },
            //"$jobs.created",
            "$jobs.created_str",
            ISODate("1971-01-01T00:00:00.000Z")
          ]
        }
      }
    }
  },
  {
    "$match": {
      "$expr": {
        "$or": [
          {
            "$ne": [
              "$min",
              ISODate("1971-01-01T00:00:00.000Z")
            ]
          }
        ]
      }
    }
  }
])
Diese Abfrage funktioniert.

Wechselt man auf die auskommentierte Variante, die das Minimum auf Datum als ISODate behandelt, erhalte ich kein Ergebnis.
Unabhängig vom Typ müsste min immer funktionieren. (und ein Ergebnis liefern)

Hier im Playground:
 
Zuletzt bearbeitet:
Werbung:
Zurück
Oben