我有一个用于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 举报,一经查实,本站将立刻删除。