Предположим, у меня есть коллекция, т.е. A.
Я хочу получить все ключи к этой коллекции, которые имеют определенное значение, например, привет
{
"a": "its me hello",
"b": "it does not have value",
"c": "It has hello"
}
В этом случае я хочу запросить, чтобы вернуть ключи a и c. Которая содержит строку hello.
Как это сделать при весенней загрузке?
Я получил ответ на этот вопрос для оболочки mongo. Ссылка на ответ, который работает в оболочке монго.
Но не удалось преобразовать его в весеннюю загрузку с помощью MongoRepository.
Я пробую следующий код -
try {
MongoClientURI uri = new MongoClientURI(connectionRequest.getUri());
MongoClient mongoClient = new MongoClient(uri);
for (String databaseName : mongoClient.listDatabaseNames()) {
logger.info("***Database: ***" + databaseName);
MongoDatabase database = mongoClient.getDatabase(databaseName);
if(database.getName().equals("forum")|| database.getName().equals("kidsventure")) {
MongoIterable<String> collections = database.listCollectionNames();
for (String collectionName : collections) {
logger.info("***Collection: ***" + collectionName);
MongoCollection<Document> mongoCollection = database.getCollection(collectionName);
Aggregation aggregation = Aggregation.newAggregation(Aggregation.project(Aggregation.ROOT), Aggregation.match(Criteria.where(connectionRequest.getWord())));
System.out.println(aggregation);
Iterable<Document> fields = mongoCollection.find();
fields.forEach(field -> {
String json = field.toJson();
JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();
for (Map.Entry<String, JsonElement> entry : jsonObject.entrySet()) {
System.out.println("***key***" + entry.getKey() + "***value***" + entry.getValue().toString());
System.out.println(entry.getValue().toString().toLowerCase().equals(connectionRequest.getWord().toLowerCase()));
System.out.println(entry.getValue().getAsString().toLowerCase().equals(connectionRequest.getWord().toLowerCase()));
}
// for (Map.Entry<String, JsonElement> entry : jsonObject.entrySet()) {
// if (entry.getValue().getAsString().equals(connectionRequest.getUri())) {
// System.out.println("***key***" + entry.getKey());
// }
// }
});
}
}
}
} catch (Exception e) {
logger.info("***Error connecting!***" + e.getMessage());
}