У меня есть java-код, в котором мне нужно довольно часто ссылаться на коллекцию mongo, что занимает много времени. У меня нет проблем с наличием больших объектов в куче. Итак, в основном я хочу скопировать всю эту коллекцию в соответствующий объект в java, на который я могу ссылаться при поиске полей.
1) Можно ли скопировать все документы в этой коллекции в JsonArray / List за один раз без повторения документов?
2) Могу ли я выполнять совокупный поиск в JSONArray, чтобы найти соответствующие документы, как мы делаем запросы, а затем выполняем операцию поиска?
1) Можно ли скопировать все документы в этой коллекции в JsonArray / List за один раз без повторения документов?
А: Если вы хотите найти все документы JavaDocumentName (любое имя коллекции в java)
List<JavaDocumentName> listRes = mongoOperation.findAll(JavaDocumentName.class);
2) Могу ли я выполнять совокупный поиск в JSONArray, чтобы найти соответствующие документы, как мы делаем запросы, а затем выполняем операцию поиска?
Query searchQuery = new Query(Criteria.where("name").is("Parth"));
List<JavaDocumentName> listRes = mongoOperations.find(searchQuery, JavaDocumentName.class);
Пример:
@Document (collection = "Клиент") public class Customer {
}
Список listRes = mongoOperation.findAll (Customer.class);
Если вам нужен JSON, тогда метод контроллера создаст для вас JSON в конце, как указано ниже,
@RequestMapping(value = "/customers", method = RequestMethod.GETG,
produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(value = HttpStatus.OK)
public Customer getCustomer{
}
============================
Еще один способ сделать это
Вы можете использовать CollectionCallback для непосредственной работы с возвращенным DBObject и просто toString () его:
template.execute("jvmInfo", new CollectionCallback<String>() {
String doInCollection(DBCollection collection) {
DBCursor cursor = collection.find(query)
return cursor.next().toString()
}
}
String result = mongoTemplate.findOne(basicQuery, String.class, "jvmInfo");
@Document (collection = "Customer") открытый класс Customer {} List <Customer> listRes = mongoOperation.findAll (Customer.class);
Разве я не могу просто сохранить его в массиве JSON вместо создания собственного класса?
В конце вы получите сам массив JSON, когда этот метод вызывается из клиента-почтальона или любого внешнего клиента. @RequestMapping (value = "/ customers", method = RequestMethod.GETG, производит = MediaType.APPLICATION_JSON_VALUE) @ResponseStatus (value = HttpStatus.OK) public Customer getCustomer {}
Извините, я не смог этого понять. Под "JavaDocumentName" вы имеете в виду фактическую коллекцию в базе данных или массиве jsonarray, в который копируются все данные? Кроме того, не могли бы вы дать мне фрагмент того, как скопировать коллекцию базы данных в jsonArray? Кроме того, как только у меня будет готов массив, я хочу выполнять все запросы к самому массиву.