#mongodb #nosql-aggregation
#mongodb #nosql-агрегация
Вопрос:
У меня около 11 миллионов записей со следующими характеристиками:
{
"_id" : ObjectId("57f29732595231d5fcb21faa"),
"PHONE" : NumberLong(593967848781),
"TRAFFIC" : NumberInt(0),
"ID_SUBPROD" : "PPA",
"TYPE" : "basic",
"MARCA" : "X",
"MODELO" : "G9"
}
Я пытаюсь проверить, являются ли некоторые телефонные номера дубликатами.
Я могу выполнять запросы и агрегации по каждому полю, КРОМЕ «ТЕЛЕФОНА», например, агрегацию по «ТИПУ»:
db.Phonebase.aggregate({$group:{_id:"$TYPE", count:{$sum:1}}})
ВОЗВРАТ:
{
"_id" : "feature phone",
"count" : NumberInt(2323827)
}
{
"_id" : "basic",
"count" : NumberInt(2974583)
}
{
"_id" : "smartphone",
"count" : NumberInt(3461723)
}
{
"_id" : "",
"count" : NumberInt(2381208)
}
Но агрегация на «ТЕЛЕФОНЕ»:
db.Phonebase.aggregate({$group:{_id:"$PHONE", count:{$sum:1}}})
Возвращает только общее количество телефонных номеров в базе данных, а не количество раз, когда каждый из них найден:
{
"_id" : null,
"count" : NumberInt(11141341)
}
Чего мне здесь не хватает? Заранее спасибо.
Комментарии:
1. Ваш запрос агрегации кажется правильным. И это должно быть связано с.
NumberLong
Из того, что я могу предположить из результата, который вы вставляете"_id" : null
, просто говорит мне, что в коллекции, к которой вы выполняете свой запрос, нет документов сPHONE
полем. Вы уверены, что в ваших документах действительно есть это поле? Обратите внимание, что имена полей чувствительны к регистру.2. Да, я уверен, что есть поле «ТЕЛЕФОН», оно даже может быть первичным ключом в базе данных SQL. Вот почему я пытался найти дубликаты. Я даже не могу выполнить операцию find ()