mongodb - How to search for documents containing objects with specific values in a nested array -


this document structure

{     someprop: 'string value',     options:{       environment: [{value: 'gym'}, {value:'water'}, {value: 'home', label:'other string'}]     } } 

i need filter documents options.environment contains {value: 'gym'} , {value: 'water'}.

what best way make query using mongodb aggregate $match or strategy ($unwind/$group, $map)?

you can use $all query operator this:

{     "options.environment.value": {         "$all": ["gym", "water"]     } } 

generally speaking, mongodb flattens structure before running query. in case, means searching document shaped this:

{     "someprop": "string value",     "options": {         "environment": {             "value": ["gym", "water", "home"],             "label": ["other string"]         }     } } 

if want opposite behavior, can use $elemmatch query operator.

none of specific aggregation framework, can use regular find operation if don't need other aggregation framework features.