根据提供的代码,我注意到你使用了lookupmatch方法对数据进行关联和筛选。但是,根据你的描述,你只想获取一条数据,而不是整个集合的数据。

问题可能出在match方法中的参数上。你使用了usernameinstitutionpassword来匹配数据,这可能导致多条结果返回。

要获取一条数据,你可以尝试使用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对象的属性值与数据库中的数据匹配,以便正确返回结果

String queryStr =				dbcollectionusersrn				+ aggregatern				+ lookuprn				+ from menurn				+ localFieldmenu_idrn				+ foreignFieldmenu_id rn				+ as menurn				+ rn				+ matchrn				+ userna

原文地址: https://www.cveoy.top/t/topic/iJTh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录