mamy zbiór elementów, który ma następującą strukturę:MongoDB zaawansowanych zapytań: uzyskać elementy w tablicy pasujących drugi warunek
elementów:
{
id : 123,
items : [ { color: "blue", "groups" : [3, 5] }, { color: "red", "groups" : [6, 8] } ]
}
{
id : 124,
items : [ { color: "blue", "groups" : [1, 2] }, { color: "green", "groups" : [5, 9] } ]
}
Chcemy skuteczny sposób, aby uzyskać Elementy, które mieć przedmiot z kolorem niebieskim dostępny dla grup 5, 9, 27, 123 lub 56. Powinno to zwrócić Element z id 123, ale nie element z identyfikatorem 124, ponieważ element musi spełniać oba warunki. Chcemy, aby zapytanie było jak najbardziej efektywne.
To zapytanie jest sprawna, ale nie spełnia wymogu:
{$and : { "items.groups" : { $in : [5, 9, 27, 123, 56] }, "items.color" : "blue" }}
ponieważ będzie on pasował id = 124
ponieważ ma przedmiotu, który pasuje do „Blue” i jeszcze jeden, który odpowiada grupie 9.
znalazłem '$ elemMatch' określony [w mon go doc] (http://docs.mongodb.org/manual/tutorial/query-documents/). Jako początkujący uważałem za przydatne przeglądanie wszystkich przykładów z [tam] (http://docs.mongodb.org/manual/tutorial/query-documents/), może ktoś inny to zrobi. –