1

Я использую версию MongoDB 2.6.Система зависания запросов Mongodb

У меня в нем около 3 миллионов данных. Когда я запускаю этот ниже запрос, он висит на моем Java-приложении.

(я использую Mongodb connector для извлечения данных из там.)

db.collection_name.find{ 
    "client_id.event.currentDate": { 
     $gte: "2016-12-18", 
     $lte: "2017-01-17" 
    }, 
    "client_id.event.name": "SEARCH HOTELS SUCCESS", 
    _id: { 
     $lt: ObjectId('5856428ce4b0f530cc74c090') 
    } 
} 

Что бы быть лучшим способом для получения этого типа больших объемов данных?

Редактировать 1:

мы имеем индекс по моей коллекции

{"client_id.event.name" : 1 ,"_id" :1 ,"client_id.event.currentDate" :1} 

Edit 2:

Образец документа из базы данных:

{ 
     "_id" : ObjectId("57a316a60cf26576defb7837"), 
     "client_id" : { 
       "clientIp" : "50.23.117.45", 
       "event" : { 
         "installationId" : "us2zv39vti5v", 
         "action" : "END", 
         "client_us_lastCommunicatedAt" : "2016-08-01T10:23:38.502Z", 
         "duration" : 60, 
         "client_us_userUpdatedOn" : null, 
         "name" : "APPSESSION", 
         "appId" : 3, 
         "userName" : "us2zv39vti5v", 
         "currentDate" : "2016-08-01T10:24:38.502Z", 
         "superProperties" : { 
           "client_us_installAt" : "2016-08-01T10:23:38.502Z", 
           "client_us_cookieEnabled" : true, 
           "client_us_referrer" : "Self", 
           "client_us_screen_width" : 768, 
           "client_us_counter" : 1, 
           "client_us_screen_height" : 1360, 
           "client_us_brand" : "Google", 
           "client_us_browser_version" : "23.32.12.20", 
           "client_us_screen_dpi" : 96, 
           "client_us_os" : "Windows", 
           "client_us_screen_colourDepth" : 24, 
           "client_us_os_version" : "10", 
           "client_us_flashVersion" : "no check", 
           "client_us_lastCommunicatedAt" : "2016-08-01T10:23:38.502Z", 
           "browser" : "Chrome", 
           "client_us_screen_pixelDepth" : 0, 
           "client_us_referring_domain" : "Self", 
           "client_us_css_pixel" : 1, 
           "client_us_mobile" : false 
         }, 
         "userProperties" : { 
           "duration" : 60, 
           "Country" : "IN" 
         }, 
         "installProperties" : { 
           "email" : "[email protected]" 
         } 
       } 
     } 
} 
+0

Не должны быть имена встроенных полей в кавычках, как в '' client_id.event.currentDate''? – chridam

+0

отредактированный, пожалуйста, посмотрите еще раз. Я пропустил двойную цитату здесь, но в реальном запросе ее там. –

+0

Вам нужно выяснить, что висит. Обычно это выполнение запроса выполняется на вашем экземпляре MongoDB, а не загрузка данных из MongoDB. Работа с большими наборами данных выполняется лучше всего с помощью потоковой передачи. – mp911de

ответ

0

У вас есть 3 миллиона данных, и каждый из них имеет не менее 4 полей Date. Теперь, когда spring-mongo-data запрашивает все это из mongo, он должен преобразовать значение String даты (которое является видом json string date format = Java String) в объект Date java для 12 миллионов дат. Так что это займет некоторое время.

Смежные вопросы