gpt4 book ai didi

java - 如何使用字符串中的 json 执行聚合 mongo 查询?

转载 作者:行者123 更新时间:2023-12-01 09:38:00 25 4
gpt4 key购买 nike

我有一个带有 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 执行聚合 mongo 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38685823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com