#java #mongodb #performance #document
#java #mongodb #Производительность #документ
Вопрос:
Я создаю API для извлечения документов из mongodb, в mongo более 30 миллионов документов, для запроса документов в этой структуре требуется около 45-60 секунд, используя приведенный ниже Java-код для запроса документов в этой структуре:
{
"Type": "CUS",
"ID": "01010101",
"Set": [
{
"Group": "Marketing",
"Rule": "Rule_1",
"Ind": "Y",
},
{
"GroupName": "Sales",
"RuleName": "Rule_2",
"Ind": "N",
}
]
}
BasicDBObject query = new BasicDBObject();
query.put("ID", new BasicDBObject("$in", payload.getIds()));
FindIterable<Document> documents = collection.find(query);
for (Document doc : documents) {
// looping through docs and then construct some objects and returns the result to the controller class
}
похоже, что это занимает слишком много времени в части цикла «для (Document doc: documents)», я не уверен, что происходит, не могли бы вы, пожалуйста, помочь.
Спасибо, и я ценю это.
Комментарии:
1. На данный момент максимальное количество идентификаторов «payload.getIds()» в запросе равно 200, не уверен, что это было основной проблемой!
2. Есть ли у поля ID созданный для него индекс? Похоже, вы создали поле ID, отличное от поля _id, я прав?
3. да, нет индекса для других созданных мной идентификаторов
4. Я только что добавил индекс к идентификатору, и теперь я получил действительно быструю производительность. Спасибо!