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?
Grazie per le informazioni. Capisco che sia difficile documentare ogni combinazione, ma sarebbe molto utile sapere che alcuni degli operatori possono essere combinati. –
C'è ancora un modo per farlo? –