MongoDB Оператор совокупного набора - $ setUnion
MongoDB: $ setUnion
Операторы MongoDB $ setUnion принимают любое количество выражений аргументов или массивов и возвращают массив, содержащий элементы, которые присутствуют в любом входном массиве.
Синтаксис:
{$ setUnion: [<expression1>, <expression2>, ...]}
- Оператор $ setUnion может выполнять операции над множествами только для массивов и обрабатываться как множества. Если какое-либо дублирующее значение содержится в массиве, оно игнорируется оператором $ setUnion. Порядок элементов не важен в этой операции.
- В результате после фильтрации дублирующихся значений в операции $ setUnion в результате появляется только уникальное значение в массиве.
- Когда набор содержит вложенный элемент массива, $ setUnion не опускается во вложенный массив, а оценивает массив на верхнем уровне.
Коллекция образцов test_collection
{ "_id" : 1, "A" : [ "cat", "rat" ], "B" : [ "cat", "rat" ] }
{ "_id" : 2, "A" : [ "cat", "rat" ], "B" : [ ] }
{ "_id" : 3, "A" : [ ], "B" : [ "cat" ] }
{ "_id" : 4, "A" : [ "cat", "rat" ], "B" : [ "rat", "cat", "rat" ] }
{ "_id" : 5, "A" : [ "cat", "rat" ], "B" : [ "cat", "rat", "dog" ] }
{ "_id" : 6, "A" : [ "cat", "rat" ], "B" : [ [ "cat", "rat" ] ] }
{ "_id" : 7, "A" : [ "cat", "rat" ], "B" : [ [ "cat" ], [ "rat" ] ] }
{ "_id" : 8, "A" : [ ], "B" : [ ] }
{ "_id" : 9, "A" : [ "cat", "rat" ], "B" : [ "dog", "cat" ] }
}
Пример: $ setUnion
В следующей операции агрегирования используется оператор $ setUnion, который сравнивает массив A, а B возвращает набор массивов, который содержит общие элементы, а также остальные элементы, найденные в обоих массивах.
> db.test_collection.aggregate(
... [
... { $project: { A:1, B: 1, allValues: { $setUnion: [ "$A", "$B" ] }, _id: 0 } }
... ]
... );
После операции следующий результат будет возвращен оператором $ setUnion.
> db.test_collection.aggregate(
... [
... { $project: { A:1, B: 1, allValues: { $setUnion: [ "$A", "$B" ] }, _id: 0 } }
... ]
... );
{ "A" : [ "cat", "rat" ], "B" : [ "cat", "rat" ], "allValues" : [ "cat", "rat" ] }
{ "A" : [ "cat", "rat" ], "B" : [ ], "allValues" : [ "cat", "rat" ] }
{ "A" : [ ], "B" : [ "cat" ], "allValues" : [ "cat" ] }
{ "A" : [ "cat", "rat" ], "B" : [ "rat", "cat", "rat" ], "allValues" : [ "cat", "rat" ] }
{ "A" : [ "cat", "rat" ], "B" : [ "cat", "rat", "dog" ], "allValues" : [ "cat", "rat", "dog" ] }
{ "A" : [ "cat", "rat" ], "B" : [ [ "cat", "rat" ] ], "allValues" : [ "cat", [ "cat", "rat" ], "rat" ] }
{ "A" : [ "cat", "rat" ], "B" : [ [ "cat" ], [ "rat" ] ], "allValues" : [ "cat", "rat", [ "cat" ], [ "rat" ] ] }
{ "A" : [ ], "B" : [ ], "allValues" : [ ] }
{ "A" : [ "cat", "rat" ], "B" : [ "dog", "cat" ], "allValues" : [ "cat", "rat", "dog" ] }
Предыдущая: $ setIntersection
Далее: $ setDifference
Новый контент: Composer: менеджер зависимостей для PHP , R программирования
disqus2code