MongoDB: Jak dodać do tablicy element bez duplikatu?

Opublikowano: 23.07.2022 - tagi: MongoDB Baza danych Zpytanie Tablica

Operator $push pozwala na dodanie do tablicy daną wartość:

Kolekcja:

{
	_id: 1,
	tags: ['foo', 'bar']
}

Zapytanie:

db.collection.updateOne({ _id: 1}, { $push: { tags: 'bar' } });

Do tablicy tags doda nowy element: bar:

{
	_id: 1,
	tags: ['foo', 'bar', 'bar']
}

Mamy dwa elementy o takiej samej wartości: bar. Co jeśli chcemy dodać nowy element, pod warunkiem że nie istnieje on już w tablicy?

Unikanie duplikatów

Okazuje się, że ten problem można łatwo rozwiązać za pomocą operatora: $addToSet:

db.collection.updateOne({ _id: 1}, { $addToSet: { tags: 'bar' } });

Ponieważ bar już istnieje tablicy tags to nie zostanie on dodany do tablicy.