Jak używać agregacji MongoDB do operacji zestawów ogólnego przeznaczenia (suma, przecięcie, różnica)
Zetknąłem się z pewną specjalną realizacją operacji ustawiania, ale nic dla przypadku ogólnego. Jaki jest ogólny przypadek wykonywania operacji ustawiania (w szczególności przecięcia, połączenia, różnicy symetrycznej). Łatwiej jest to ustalić za pomocą javascript w $ where lub map redukuj, ale chcę wiedzieć, jak to zrobić w agregacji, aby uzyskać natywną wydajność.
Lepszym sposobem na zilustrowanie tego pytania jest przykład. Powiedz, że mam rekord z 2 tablicami / zestawami:
db.colors.insert({
_id: 1,
left : ['red', 'green'],
right : ['green', 'blue']
});
Chcę znaleźć połączenie, przecięcie i różnicę w „lewej” i „właściwej” macierzy. Jeszcze lepiej, obrazowo chcę znaleźć:
Unia -> ['czerwony', 'zielony', 'niebieski']
Skrzyżowanie -> ['green']
Różnica symetryczna -> [„czerwony”, „niebieski”]