2012-03-22 7 views
11

Nella risposta a un question ho trovato una soluzione interessante per la ricerca di valori di array usando $ elemMatch.

Se abbiamo i seguenti documenti della nostra collezione:

{ 
    foo : [ { bar : "xy", baz : 1 }, 
      { bar : "a", baz : 10 } ] 
}, 
{ 
    foo : [ { bar : "xy", baz : 5 }, 
      { bar : "b", baz : 50 } ] 
} 

La seguente query corrisponderà solo il primo documento:

db.test.find({ 
    foo : { "$all" : [ { "$elemMatch" : { bar : "xy", baz : 1} }, { "$elemMatch" : { bar : "a", baz : 10 } } ] } 
}); 

ho provato con diversi altri esempi e funziona davvero. Ma la documentazione ufficiale per l'operatore $all non dice nulla sulla combinazione di queste due query.

È questo il comportamento previsto o un bug? O è solo un problema che la documentazione non copre questo caso d'uso?

risposta

5

Questo è il comportamento previsto. La documentazione non copre questo caso d'uso e ci stiamo lavorando per migliorarlo. È difficile, tuttavia, documentare ogni possibile combinazione di query.

+2

Grazie per le informazioni. Capisco che sia difficile documentare ogni combinazione, ma sarebbe molto utile sapere che alcuni degli operatori possono essere combinati. –

+0

C'è ancora un modo per farlo? –

Problemi correlati