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”]

questionAnswers(2)

yourAnswerToTheQuestion