Как найти дубликаты в MongoDB с двумя условиями

#javascript #node.js #mongodb #mongodb-atlas

#javascript #node.js #mongodb #mongodb-atlas

Вопрос:

Я хочу найти дубликаты в атласе MongoDB. Я видел примеры поиска дубликатов, но, насколько я понимаю, они не выполняли два условия. для некоторых проблем с сетью мы обнаружили дубликаты со ссылочным (refno) номером в базе данных

итак, я хочу найти дубликат refno в этих двух условиях (currentDate и transactionTypeId)

  const transactionRecord = await this.tranModel.aggregate(
[{ $group: 
      { _id: "$refno",  count: { $sum: 1 } } }, { $match: { count: { $gt: 1 } } }
])
 

С помощью приведенного выше кода я смог получить все дубликаты в БД, но я хочу ограничить его условием

 { transactiontdate: currentDate, transactionTypeID: transactionTypesid });
 

Ответ №1:

У меня это работает

  const Record = await this.tranModel.aggregate([
                    {
                        $match: { transactiontdate: currentDate, transactionTypeID: transactionTypeID }
                    },
                    {
                        $group: { _id: "$refno", count: { $sum: 1 } }
                    }, {
                        $match: { count: { $gt: 1 } }
                    }
                ])
                if (Record != null) {
                    for (let i = 0; i < Record.length; i  ) {
                        const element = Record[i]._id.toString()
                        tranArray.push(element)
                    }
                }
            }