MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Aggregieren Sie Dokumente, bei denen Objekte im Array mehreren Bedingungen entsprechen

Sie können die folgende Abfrage mit $elemMatch verwenden um beide Werte des Arrays abzugleichen.

So etwas wie

db.collection_name.aggregate({
  "$match": {
    "item": {
      "$elemMatch": {
        "property.0": "attr1",
        "property.1": /^\+/
      }
    }
  }
});

Sie können auch $all verwenden -Operator, wenn Sie nicht auf den Array-Index verweisen möchten.

db.collection_name.aggregate({
  "$match": {
    "item": {
      "$elemMatch": {
        "property": {
          "$all": [
            "attr1",
            /^\+/
          ]
        }
      }
    }
  }
});