MongoDB: trova il valore in Array con più criteri

Ho i seguenti documenti:

{_id : 1, numbers : [-1000, 1000]} {_id : 2, numbers : [5]} 

Sto cercando di ottenere una query che troverà un documento che ha un valore nell’array di numeri compreso tra -10 e 10 (in questo caso, _id: 2). Tuttavia, quando provo il seguente:

 db.foo.find({numbers : $and : [{$gt : -10},{$lt : 10}]}) 

restituisce tutti i documenti. È ansible fare a meno di ridurre la mappa? Grazie, -JWW

È ansible utilizzare $ elemMatch per verificare se un elemento in una matrice corrisponde a un’espressione di corrispondenza specificata.

In questo caso, puoi usarlo per ottenere un documento la cui matrice di numeri ha un elemento compreso tra -10 e 10:

  db.foo.find( { numbers : { $elemMatch : { $gt : -10 , $lt : 10 } } } ); 

Ciò restituirà solo il documento _id: 2.