MongoDB: размер результата запроса больше размера коллекции - PullRequest
6 голосов
/ 09 ноября 2011

Я анализирую источник данных MongoDB, чтобы проверить его качество.Мне интересно, если каждый документ содержит атрибут time: поэтому я использовал эти две команды

> db.droppay.find().count();  
291822   
> db.droppay.find({time: {$exists : true}}).count()   
293525

Как я могу иметь больше элементов с данным полем, чем элементов, содержащихся во всей коллекции?Что не так?Я не могу найти ошибку.Если необходимо, я могу опубликовать ожидаемую структуру документа.

Версия Mongo Shell - 1.8.3.Mongo Db версия 1.8.3.

Заранее спасибо


Это ожидаемая структура записи документа:

{
  "_id" : ObjectId("4e6729cc96babe974c710611"), 
  "action" : "send",
  "event" : "sent",
  "job_id" : "50a1b7ac-7482-4ad6-ba7d-853249d6a123",    
  "result_code" : "0",
  "sender" : "",
  "service" : "webcontents",
  "service_name" : "webcontents",
  "tariff" : "0",
  "time" : "2011-09-07 10:22:35",
  "timestamp" : "1315383755",
  "trace_id" : "372",
  "ts" : "2011-09-07 09:28:42"
}

Ответы [ 2 ]

1 голос
/ 13 февраля 2012

Я думаю, что это проблема с индексом.Могу поспорить, что у droppay есть индекс: время, и некоторые небезопасные операции обновили базовую коллекцию без обновления индекса.

Можете ли вы попробовать восстановить базу данных и посмотреть, улучшит ли это ее?.

Удачи.

0 голосов
/ 12 декабря 2011

Вероятно, есть time значения типа массив.

Вы можете сделать db.droppay.find({time: {$type : 4}}), чтобы найти такие документы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...