полем innerid
делаю так —
[
{
'$project': {
'innerid': 1,
'uuid': 1
}
}, {
'$group': {
'_id': '$innerid',
'uuids': {
'$push': '$uuid'
}
}
}, {
'$addFields': {
'sizeOfArray': {
'$size': '$uuids'
}
}
}, {
'$match': {
'sizeOfArray': {
'$gt': 300
}
}
}
]
имею результат компасе — докумен с иннерид 959407 имеет 317 дублей.
Но проблема в том что файнд {innerid: 959407} дает мне почти 5000 доков.
Что я делаю не так? Почему разные цифры?
Я понял почему разница. В компасе на вкладке агрегаций лимиты стояли.
Может есть более правильный способ найти документы с дублями поля которое должно быть уникальным?
А на этот вопрос можете ответить?
А что именно надо? Дубликаты должны быть в коллекции или нет? Опишите исходную бизнес задачу.
Вообще поле innerid и uuid должны быть уникальными, они есть в каждом документе. С uuid все ок, он не повторяется, а вот innerid нет. Хочу узнать сколько у меня уникальных innerid в коллекции
А никакие constraints вы не описывали изначально на уникальность? Чтобы дубликаты даже не попадали в коллекцию.
https://docs.mongodb.com/manual/reference/method/db.collection.distinct/
нет, не описывал. В будущем сделаю
Обсуждают сегодня