Mongodb $ mergeObjects использует атрибут переменной в качестве ключа объекта

#mongodb #mongoose #mongoid

#mongodb #mongoose #mongoid

Вопрос:

В настоящее время я пишу агрегацию и у меня есть массив с именем tags сложных объектов, таких как: {name: 'tag1'} .

Я хочу убедиться, что массив содержит только уникальный tags .

     {
        $addFields: {
            uniqueTags: {
                $reduce: {
                    input: "$tags",
                    initialValue: {},
                    in: {$mergeObjects: {"$$this.name": "$$this"}}
        }}
    }},
  

Приведенный выше код не выполняется, потому что я использую $$this.name в качестве ключа объекта. Если бы я изменил его на что-то другое, 5 например, агрегация работает идеально.

Комментарии:

1. Не могли бы вы показать образцы документов и желаемый результат

Ответ №1:

$addToSet работает для вложенных объектов.