微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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();`

结果可以被迭代.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐