String queryStr = dbcollectionusersrn + aggregatern + lookuprn + from menurn + localFieldmenu_idrn + foreignFieldmenu_id rn + as menurn + rn + matchrn + userna
根据提供的代码,我注意到你使用了lookup和match方法对数据进行关联和筛选。但是,根据你的描述,你只想获取一条数据,而不是整个集合的数据。
问题可能出在match方法中的参数上。你使用了username、institution和password来匹配数据,这可能导致多条结果返回。
要获取一条数据,你可以尝试使用limit方法来限制返回结果的数量。将.end()替换为.limit(1).end()可以确保只返回一条数据。
修改后的代码如下所示:
String queryStr =
"db.collection('users')"
+ ".aggregate()"
+ ".lookup({"
+ " from: \"menu\","
+ " localField:\"menu_id\","
+ " foreignField:\"menu_id\","
+ " as: \"menu\""
+ "})"
+ ".match({"
+ " username:\""+ userModel.getUsername() +"\","
+ " institution:\""+ userModel.getInstitution() +"\","
+ " password:\""+ userModel.getPasswords() +"\""
+ "})"
+ ".limit(1)"
+ ".end()";
queryStr = queryStr.replace("\\r\\n", "");
query.put("query",queryStr);
JSONObject result = wxCloudUtil.cloudQuery("query", token, query);
这样修改后,你应该只能获取到一条数据作为结果。确保提供的userModel对象的属性值与数据库中的数据匹配,以便正确返回结果
原文地址: https://www.cveoy.top/t/topic/iJTh 著作权归作者所有。请勿转载和采集!