java - 使用 mongodb 查找,同时使用 java 中的吗啡迭代列表

标签 java mongodb list aggregation morphia

我的 MongoDB 中有 2 个集合。

Details1(包含对象 1 和对象 2 的详细信息) 详细信息2(包含对象2和对象3的详细信息)

java 对象本质上是 Object1 和 Object2 列表。 对象 3 是单独的。

Object1 包含一个名为 List 的属性 对象 2 包含链接到另一个集合中的对象 3 的字段。

目前我的 Dao 正在 ..... 获取对象 1 迭代列表对象 2 的内部对象 1。 使用对象 2 的信息获取对象 3。

我需要将其转换为 1 个 mongodb 查询。

对象 1 的 DAO = 获取对象 1 : -

  Query<FclDetail> query =
                this.createQuery()
                        .field(GROUP_ACCOUNT_NO).equal(requestData.getGroupAccountNo())
                        .field(OFFICE_ID).equal(requestData.getOfficeId())
                        .field(AC_SYS_ID).equal(requestData.getAcSysId());

服务:-

 FclDetail fclDetail = fclDao.getFclDetails(request.getRequestData());
 FundIfchFacility fundIfchFacility = serviceMapper.map(fclDetail);
 fundIfchFacility.getBsLmStructureNodeList().parallelStream().forEach((bsLmStructureNode) -> {
            FclCliDetail fclCliDetail = fclCliDetailDao.getFclCliDetails(bsLmStructureNode.getNodeInstanceId(),bsLmStructureNode.getStructureCode());}

第二次 DAO 调用:-


        Query<FclCliDetail> query = this.createQuery()
                .field(STRUCTURE_CODE)
                .equal(strCde)
                .field(NODE_INSTANCE_ID)
                .equal(ndeItaId);

我如何展开或合并这两个查询以使其查找对象....找到该对象....遍历对象内的列表....然后使用有关这些对象的附加信息。


最佳答案

考虑使用 $lookup 的聚合.

关于java - 使用 mongodb 查找,同时使用 java 中的吗啡迭代列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57907664/

相关文章:

java - 在命令提示符下,能够从不同的目录编译java文件,但无法运行它

mongodb - 使用 Jongo 在 MongoDB 中查找带有 $lt 操作数的 5 天前的文档 - 查询返回空结果

android - 在 firefox 或任何其他适用于 windows/桌面 linux 的浏览器中像 appstore 一样列出

java - 插件GMF

java - 如何在运行时替换对象组合的实现(接口(interface)继承)

javascript - 如何使用异步重构 Node js 代码并避免回调 hell

mongodb - 为什么 MongoDb 查找集合排序速度很慢

c# - .NET 列表排序在所有返回 0 后返回不同的顺序

python - 循环似乎不遵循顺序

java - 何时使用字节流或字符流来读/写文本