2012-08-27 24 views
7

ho i seguenti documenti:MongoDB: trovare il valore in Array con criteri multipli

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

Sto cercando di ottenere una query che trovare un documento che ha un valore nella matrice numeri che è compresa 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. È possibile fare a meno di ridurre la mappa? Grazie, -JWW

risposta

7

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

In questo caso, è possibile utilizzare per ottenere un documento il cui numero array ha un elemento che è tra -10 e 10:

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

Questo sarà solo restituirà il _id: 2 documenti.

+0

molto bello. Grazie! – JWally

Problemi correlati