当前位置: 首页 > 知识库问答 >
问题:

mongodb 3.2 java驱动聚合,查找匹配

曾阳飙
2023-03-14

我想知道如何使用mongodb 3.2的java驱动程序对$lookup集合执行聚合$match。下面是我正在处理的两个集合的结构:

coll_one:{
_id : ObjectId("hex_string"),
foreign_id : ObjectId("hex_string") **the id of coll_two**}

coll_two:{
_id : ObjectId("hex_string"),
actif : true,  
closed : false }

对两个 id (coll_one.foreign_id 的查找

这是我正在使用的Java代码:

Bson lookup = new Document("$lookup", 
new Document("from", "coll_two"  )
.append("localField", "foreign_id")
.append("foreignField", "_id")
.append("as", "look_coll"));

List<Bson> filters = new ArrayList<Bson>();
filters.add(lookup);

//here is the MATCH
filters.add(match(eq("look_coll.actif",true))); 

DB().getCollection("coll_one").aggregate(filters);

当我移除火柴部分时,一切都很好。我尝试了这么多的可能性组合,但都没有成功!!!

有人能告诉我这是否可能吗????

共有1个答案

漆雕洋
2023-03-14

将您的< code>$match请求添加到< code>Document实例:

Bson match = new Document("$match",
                new Document("look_coll.actif", true));

filters.add(match);

下面是一个完整的示例:

MongoClient mongoClient = new MongoClient("localhost");

MongoDatabase db = mongoClient.getDatabase("mydb");

Bson lookup = new Document("$lookup",
        new Document("from", "coll_two")
                .append("localField", "foreign_id")
                .append("foreignField", "_id")
                .append("as", "look_coll"));

Bson match = new Document("$match",
        new Document("look_coll.actif", true));

List<Bson> filters = new ArrayList<>();
filters.add(lookup);
filters.add(match);

AggregateIterable<Document> it = db.getCollection("coll_one").aggregate(filters);

for (Document row : it) {
    System.out.println(row.toJson());
}
 类似资料:
  • 我有两个收藏品 员额:

  • 但在我看来不对。有人能建议别的方法做这件事吗。

  • 我有包含以下模式的文档的集合。我想过滤/查找所有包含性别女性的文档并汇总大脑评分的总和。我尝试了下面的语句,它显示了无效的管道错误。 架构:

  • 问题内容: 我试图实现使用中去(golang)我的MongoDB查询的一个功能氧化镁包。 以下是我的收藏: 资料夹: 文件: 以下是我编写的在外壳程序上成功运行的查询: 如果我在外壳上运行此脚本,则会得到所需的结果。基本上,集合会返回给我,其中包含通过链接的全部相关内容。我不在这里包括它,因为这个问题似乎已经太久了。 我试图将此查询转换为 mgo 能够解析和执行的内容。在下面的go代码中: 我总是

  • 我开始在我的应用程序中使用MongoDB。我正在使用Robo3T学习和测试查询,现在,我正在将查询翻译成C#。 我对蒙古机器人3T的质疑 在Robo 3T上运行上述脚本,其检索到以下结果: 现在,我试图在我的. NET MVC项目上重现这个结果,我面临着将子字符串转换为C#的困难。 C#代码 这种方式很好,但是,它是按整个字符串日期分组的,我想按短字符串日期分组,如:“2019-03-01”。 我

  • >[danger] 注意!!! 使用聚合功能时,必须给它一个别名,以便能够从模型中访问它 > 聚合函数的计算,都是排除了 null 值,所以COUNT( id ) 一般推荐用非空的主键来计算 COUNT 计算数量 const { Sequelize } = app; // 查询班级总人数,按照姓名聚合 const ret = await Student.findAll({ attribut