Querying MongoDB to match in the first item in an array Querying MongoDB to match in the first item in an array arrays arrays

Querying MongoDB to match in the first item in an array


I believe you want imgs.0. eg, given your example document, you want to say: db.products.find({"imgs.0": "http://foo.jpg"})

Be aware that referencing array indexes only works for the first-level array. Mongo doesn't support searching array indexes any deeper.


You can use dot notation for array indexes:

db.products.find({"imgs.0": "http://foo.jpg"})

Here is an excerpt from the relevant documentation for dot notation.

MongoDB uses the dot notation to access the elements of an array and to access the fields of a subdocument.

To access an element of an array by the zero-based index position, concatenate the array name with the dot (.) and zero-based index position, and enclose in quotes:

'<array>.<index>'

Additionally, here is a link to the relevant array documentation.