Ich versuche, eine Sammlung von Dokumenten auf der Grundlage des Inhalts ihrer eingebetteten Dokumente auszuwählen.
Mein Modell sieht folgendermaßen aus:
class box
embeds_many :items
field :stuff
end
class item
field :attrib1
field :attrib2
field :array
end
So mit dieser Struktur kann ich mit der folgenden Abfrage eine Sammlung von Boxen Basen auf es ist Element Attribute zu extrahieren:
Box.any_in(:'items.array' => [:value1, :value2]).where(:'items.attrib1'=> 'x', :'items.attrib2' => 'y').order_by([:stuff, :asc])
So diese Abfrage gibt mir eine Sammlung von Feld, das Elemente mit Attributen 1 = x und Attribute 2 = y und Array, die value1 oder value2 enthält
Das ist alles großartig, aber das Problem ist, dass ich alle Attribute in einem Punkt zusammenfassen muss. Was ich meine, ist, dass diese Abfrage mich Box wie diese zurückgeben wird:
box
{
items
[
{array => [value1], attrib1 => "x", attrib2 => "z"}
{array => [value1], attrib1 => "h", attrib2 => "y"}
]
}
Die Kriterien der Abfrage werden eingehalten, denn es stimmt zwar, dass Attribut1 = "x" und Attribut2 = "y" in diesem Feld ist, aber leider nicht innerhalb desselben Elements.
Das ist es, was ich brauche, die Liste der Felder enthält Elemente, die alle gewünschten Werte innerhalb desselben Elements haben.
Wie kann ich das tun? Ich habe einfach keine Ahnung? Ich hoffe, ich habe mich klar ausgedrückt, ich war mir nicht ganz sicher, wie ich mein Problem erklären sollte.
Danke,
Alex