Pour la première partie, vous devriez pouvoir récupérer cet enregistrement en faisant :
db.collectionName.find({"attributes.id": 1, "attributes.value": 150});
Cela récupérera uniquement le champ _id de tout objet qui a un élément du tableau d'attributs qui a id =1 et valeur =150.
Étant donné que la deuxième partie de votre question implique de renvoyer un nombre de correspondances, vous devriez explorer vos options avec map -réduire . Vous ne pouvez pas produire ce résultat avec une simple requête Mongo.