Für den ersten Teil sollten Sie in der Lage sein, diesen Datensatz wie folgt abzurufen:
db.collectionName.find({"attributes.id": 1, "attributes.value": 150});
Dadurch wird nur das _id-Feld von jedem Objekt abgerufen, das ein Element des Attribute-Arrays mit id =1 und value =150 hat.
Da der zweite Teil Ihrer Frage die Rückgabe einer Anzahl von Übereinstimmungen beinhaltet, sollten Sie Ihre Optionen mit map erkunden -reduzieren . Sie können dieses Ergebnis nicht mit einer einfachen Mongo-Abfrage erzielen.