Как выполнить агрегированный монго-запрос, используя json в строке?
У меня есть строка с агрегированным JSON-запросом (загруженным из файла) для mongodb. В робомонго это работает хорошо. Так что в робомонго у меня есть:
db.getCollection('Odds').aggregate(
[
{
"$lookup": {
"from": "...",
"localField": "...",
"foreignField": "...",
"as": "..."
}
},
{ "$unwind": "$..." },
{
"$redact": {
... etc ...
}
}
]
)
Файл json точно такой же, но с удаленной первой и последней строкой, так что это json. Когда я загружаю это в Java, он анализирует правильно. Результатом синтаксического анализа является «BasicDBList»:
String query = "..."; // read from file
BasicDBList q = (BasicDBList) JSON.parse(query);
Теперь я пытаюсь передать это статистической функции, но она не работает:
new MongoClient().getDatabase("db").getCollection("coll").aggregate(q);
Эта строка дает:
The method aggregate(List<? extends Bson>) in the type MongoCollection<Document> is not applicable for the arguments (BasicDBList)
Есть ли способ конвертировать типы? Должен ли я сделать это по-другому?