ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-10-10 05:04:22  阅读:667  来源: 互联网

标签:java json mongodb



我有一个用于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();`

结果可以被迭代.



标签:java,json,mongodb

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有