W odpowiedzi na question znalazłem interesujące rozwiązanie do wyszukiwania wartości tablic za pomocą $ elemMatch.
Jeśli mamy następujące dokumenty w naszej kolekcji:
{
foo : [ { bar : "xy", baz : 1 },
{ bar : "a", baz : 10 } ]
},
{
foo : [ { bar : "xy", baz : 5 },
{ bar : "b", baz : 50 } ]
}
Następująca kwerenda będzie pasować tylko pierwszy dokument:
db.test.find({
foo : { "$all" : [ { "$elemMatch" : { bar : "xy", baz : 1} }, { "$elemMatch" : { bar : "a", baz : 10 } } ] }
});
Próbowałem kilka innych przykładów i to naprawdę działa. Jednak oficjalna dokumentacja dla operatora $all nie mówi nic o łączeniu tych dwóch zapytań.
Czy jest to zamierzone zachowanie lub błąd? Czy jest to tylko problem, że dokumentacja nie obejmuje tego przypadku użycia?
Dziękujemy za informacje. Rozumiem, że trudno jest udokumentować każdą kombinację, ale dobrze byłoby wiedzieć, że niektórzy operatorzy mogą być łączeni. –
Czy jest jeszcze jakiś sposób na zrobienie tego? –