Запрос MongoDB не возвращает результатов по полю NumberLong()

#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 ()