
我需要根据一级和二级类别的name查询应用程序表的数据。但每次查询的都有用两个while循环,
DBCursor cursor1=null;
DBCursor cursor=this.dao.getDBCursor(offset, pageSize, db, "thirdCategory", sort);
DBObject query1 = new BasicDBObject();
while (cursor.hasNext()) {
@SuppressWarnings("unchecked")
Map map1 = cursor.next().toMap();
System.out.println(map1);
if(map1!=null){
query1.put("categoryId",map1.get("categoryId"));
cursor1=this.dao.getDBCursor(offset, pageSize, query1, "ucApp", sort);
while (cursor1.hasNext()) {
@SuppressWarnings("unchecked")
Map map2 = cursor1.next().toMap();
if(map2!=null){
map2.putAll(map1);
list.add(map2);
}
}
}
}
Map map3 = new HashMap();
map3.put("total", cursor1 == null ? 0 : cursor1.count());
map3.put("data", list);
return map3;
导致我分页不行。
关于MongoDB中两张表的查询
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
你知我知皆知 2024-08-04 16:56关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
在MongoDB中,你可以使用
$match和$group操作符来组合你的查询条件。但是,你需要确保你的查询是正确的,因为你没有提供足够的信息来确定如何正确地使用这些操作符。首先,你需要了解你的数据库结构。例如,你可能有三个集合:
categories,applications和thirdCategories。你需要知道如何连接它们并获取数据。如果你已经有一个有效的查询,那么你应该能够直接在
$match或$group操作符中添加条件。以下是一个示例:String categoriesCollectionName = "categories"; String applicationsCollectionName = "applications"; String thirdCategoriesCollectionName = "thirdCategories"; // 创建一个查询对象 BasicDBObject query = new BasicDBObject(); query.put("category.name", "your_category_name"); // 使用$match方法匹配查询条件 DBCursor cursor1 = this.dao.getDBCursor(query, categoriesCollectionName, sort); // 创建一个新的查询对象用于分组 BasicDBObject groupQuery = new BasicDBObject(); groupQuery.put("_id", "$applicationId"); // 使用$group方法进行分组 DBCursor cursor2 = this.dao.getDBCursor(groupQuery, applicationsCollectionName, sort); // 获取结果集 List<Map<String, Object>> result = new ArrayList<>(); while (cursor2.hasNext()) { Map<String, Object> applicationData = cursor2.next(); // 将查询到的应用程序数据添加到结果集中 } return result;在这个例子中,我们首先创建了一个查询对象
query,然后使用$match方法将categoryId字段设置为要查找的值。接下来,我们创建了一个新的查询对象groupQuery,它将应用于应用程序表,并且只返回包含特定字段的文档(在这种情况下,这个字段是applicationId)。最后,我们遍历cursor2并将每个应用程序的数据添加到结果集中。请注意,这只是一个基本的例子,你可能需要根据你的具体需求进行调整。
解决 无用评论 打赏 举报