sql >> Databasteknik >  >> NoSQL >> MongoDB

Aggregera dokument där objekt i array matchar flera villkor

Du kan använda frågan nedan med $elemMatch för att matcha arrayens båda värden.

Något liknande

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

Du kan också använda $all operatorn om du inte vill referera till arrayindex.

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



  1. Arbetar du med kapslade objekt i Redis?

  2. Fråga en MongoDB baserat på Mongo ID i en node.js-app

  3. hur man lägger till ng-modell i dynamiskt skapade textfält

  4. Hur kan jag behålla nolllängdsvärden under $unwind-fasen av den samlade pipelinen i Mongo?