mogodb or like array,map select

    /**
     * 分页 查询成员列表
     * @param params
     * @param queryInfo
     * @return
     */
    public PartialCollection list(Map<String, String> params,QueryInfo queryInfo) {
        String groupId=params.get("groupId");
        String isAuth=params.get("isAuth");
        String isInstall=params.get("isInstall");
        String nameOrMdn=params.get("nameOrMdn");
        String contactsId=params.get("contactsId");
        String spId="";//params.get("spId");
        String isAll=params.get("isAll");
        MongoQuery query = createMongoQuery(MONGO_CONTACTS_COLLECTION);
        BasicDBObject conds = new BasicDBObject();
        conds.put("contactsId", contactsId);
        if(StringUtil.isNullOrEmpty(spId)){
            spId=getSpId();
        }
        conds.put("spId",spId);
        conds.put("status", Constants.CONTACTS_MEMBER_STATUS_NORMAL);
        BasicDBObject listMatch=new BasicDBObject();
        if(StringUtil.isNotNullOrEmpty(groupId)){
            if(Constants.CONTACTS_UNGROUPED_ID.equals(groupId)){//未分组 特殊处理
                conds.put("status", Constants.CONTACTS_MEMBER_STATUS_NORMAL);
               
                listMatch.put(QueryOperators.ELEM_MATCH, new BasicDBObject("id",groupId));
                query.addAll(new BasicDBObject("groupList", listMatch));
            }else{
                conds.put("status", Constants.CONTACTS_MEMBER_STATUS_NORMAL);
                List<String> gIdList = new ArrayList<String>();
                if(Constants.YES.equals(isAll)){
                    List<Map<String,String>> gList = getGroupChildren(groupId,"3");
                    if(gList!=null){
                        for (Map<String,String> group : gList) {
                            gIdList.add(group.get("id"));
                        }
                    }
                }else{
                    gIdList.add(groupId);
                }
                listMatch.put(QueryOperators.ELEM_MATCH, new BasicDBObject("id", new BasicDBObject(QueryOperators.IN,gIdList)));
                query.addAll(new BasicDBObject("groupList", listMatch));
            }
        }
    ;
        if(StringUtil.isNotNullOrEmpty(isAuth)){
            if(Constants.YXT_NOT_AUTH.equals(isAuth)){
                BasicDBObject queryObject = new BasicDBObject().append( 
                        QueryOperators.OR, 
                        new BasicDBObject[] { new BasicDBObject("yxtMap", new BasicDBObject(QueryOperators.EXISTS,false)), 
                                              new BasicDBObject("yxtMap.isAuth", isAuth)}); 
                query.addAll(queryObject);
            }else{
                conds.put("yxtMap.isAuth",isAuth);
            }
           
        }
        if(StringUtil.isNotNullOrEmpty(isInstall)){
            if(Constants.YXT_NOT_INSTALL.equals(isInstall)){
                conds.append(QueryOperators.OR, 
                        new BasicDBObject[] { new BasicDBObject("yxtMap", new BasicDBObject(QueryOperators.EXISTS,false)), 
                                              new BasicDBObject("yxtMap.isInstall", isInstall)}); 
            }else{
                conds.put("yxtMap.isInstall",isInstall);
            }
           
        }
        if(StringUtil.isNotNullOrEmpty(nameOrMdn)){
            BasicDBObject queryObject = new BasicDBObject()
            .append(QueryOperators.OR,  new BasicDBObject[] { new BasicDBObject("name", getLikeBsonObj(nameOrMdn)),  new BasicDBObject("mdn", nameOrMdn) }); 
            query.addAll(queryObject);
        }
        query.addAll(conds);
        query.setQueryInfo(queryInfo);
        query.sort(new BasicDBObject());
        logger.info("list member conds  info"+query.getCondsObject().toString());
        return query.listPartial();
    }

你可能感兴趣的:(select)