mongodb - 我无法使用 Groovy 在 mongoDB 上执行聚合操作
问题描述
我正在使用groovy 语言对 mongoDB 执行聚合操作。管道操作匹配、查找和项目看起来工作正常。但我得到了总体错误。我尝试了很多关于这个错误的解决方案,但没有一个对我不起作用。谁能帮我?
c_1.insert(new BasicDBObject(["id" : 10, "name" : "abc", "lastName" : "kumar", "companyId": 10]))
c_2.insert(new BasicDBObject(["id" : 10, "companyName" : "Microsoft", "numEmployee" : 100 ]))
// Build the $match operations
DBObject match = new BasicDBObject("\$match", new BasicDBObject("id", 10));
// Build the $lookup operations
DBObject lookupFields = new BasicDBObject("from", "c_2");
lookupFields.put("localField", "companyId");
lookupFields.put("foreignField", "id");
lookupFields.put("as", "companydoc");
DBObject lookup = new BasicDBObject("\$lookup", lookupFields);
// Build the $project operations
DBObject projectFields = new BasicDBObject("name", 1);
projectFields.put("lastName", 1);
projectFields.put("companyId", 1);
projectFields.put("companyName", "\$c_2.companyName");
DBObject project = new BasicDBObject("\$project", projectFields);
List<DBObject> pipeline = Arrays.asList(match, lookup, project);
AggregationOutput output = c_1.aggregate(pipeline.get(0), pipeline.get(1), pipeline.get(2))
错误:响应消息:javax.script.ScriptException:com.mongodb.CommandFailureException:{“serverUsed”:“/xx.xx.xx.xx:27017”,“ok”:0.0,“errmsg”:“'光标'选项是必需的,除了带有解释参数的聚合"、"code":9、"codeName":"FailedToParse"}
解决方案
问题已解决。
使用了最新版本的 mongo-java-driver。
推荐阅读
- rust - 如何将 main 中初始化的变量传递给 Rocket 路由处理程序?
- c# - 如何仅通过更改 1 或 2 行代码来修复以下 C# 代码中的错误?
- go - 如何自定义 go-present 模板?
- r - R 中的 Lattice 程序可能会导致加载其他包和库时出错
- latex - 如何使用 maketitle 使标题看起来像这样
- django - 如何在 Django 中为页面添加书签?
- javascript - 在 JavaScript 中对字符串进行编码和解码
- php - limit_text 只输出纯文本,不显示粗体
- android - 由于一些开销,将 OpenCL 与 Android JNI 一起使用会产生缓慢的代码
- reactjs - 如何修复我的 onChangeHandler 函数以一次添加多个记录?