java-如何在字符串中使用json执行汇总mongo查询?

我有一个用于mongodb的汇总json查询(从文件加载)的字符串.在robomongo中,效果很好.因此,在robomongo中,我有

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)

有没有一种转换类型的方法?我应该用其他方式吗?

解决方法:

您距离解决方案不远:

集合函数采用:.aggregate(List< DBObject>)
但是,如果您的查询中有列表,则要使用的JSON.parse可以让您进行类型转换.

String query="[....}";
List<DBObject> q= (List<DBObject>)JSON.parse(query);
Iterable<DBObject> result=new MongoClient().getDatabase("db").getCollection("coll").aggregate(q).results();`

结果可以被迭代.

相关文章

MongoTemplate 是Spring Data MongoDB 中的一个核心类,为 S...
笔者今天要分享的是一个项目重构过程中如何将数据库选型由原...
mongodb/mongoTemplate.upsert批量插入更新数据的实现
进入官网下载官网安装点击next勾选同意,点击next点击custom...
头歌 MongoDB实验——数据库基本操作
期末考试复习总结