Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb getMappedResults()不';t正确映射原始结果_Mongodb_Aggregation Framework_Spring Data Mongodb - Fatal编程技术网

Mongodb getMappedResults()不';t正确映射原始结果

Mongodb getMappedResults()不';t正确映射原始结果,mongodb,aggregation-framework,spring-data-mongodb,Mongodb,Aggregation Framework,Spring Data Mongodb,在聚合中使用展开操作时,获取映射结果时遇到问题 以下是我的依赖项。在依赖项下面,我提到了两个模型类,我在上一篇文章中使用了聚合代码。我在本机查询和Spring查询的结果中获取数据。但区别在于,Spring查询结果即使有文档,orgMap数组也是空的。而本机查询返回的文档在orgMap数组中的每个文档都有一个数据 <dependency> <groupId>org.springframework</groupId>

在聚合中使用展开操作时,获取映射结果时遇到问题

以下是我的依赖项。在依赖项下面,我提到了两个模型类,我在上一篇文章中使用了聚合代码。我在本机查询和Spring查询的结果中获取数据。但区别在于,Spring查询结果即使有文档,orgMap数组也是空的。而本机查询返回的文档在orgMap数组中的每个文档都有一个数据

<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>

        <!-- mongodb java driver -->
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <version>3.0.0</version>
        </dependency>

        <!-- Spring data mongodb -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-mongodb</artifactId>
            <version>1.10.3.RELEASE</version>
        </dependency>





        package com.mongodb.model.user;

        import java.util.HashSet;
        import org.springframework.data.annotation.Id;
        import org.springframework.data.annotation.PersistenceConstructor;
        import org.springframework.data.mongodb.core.mapping.Document;
        import com.alta.mongodb.model.user.UserOrgMap;

        @Document(collection = "users")

        public class Users {

            public Users() {
                super();
            }

            @PersistenceConstructor
            public Users(String userId, String login, String firstName, String lastName, 
                    HashSet<UserOrg> userOrg) {
                super();
                this.userId = userId;
                this.login = login;
                this.firstName = firstName;
                this.lastName = lastName;
                this.userOrgMap = userOrgMap;
            }

            @Id
            private String userId;
            private String login;
            private String firstName;
            private String lastName;
            private HashSet<UserOrgMap> userOrgMap;


            public String getUserId() {
                return userId;
            }
            public void setUserId(String userId) {
                this.userId = userId;
            }
            public String getLogin() {
                return login;
            }
            public void setLogin(String login) {
                this.login = login;
            }
            public String getFirstName() {
                return firstName;
            }
            public void setFirstName(String firstName) {
                this.firstName = firstName;
            }
            public String getLastName() {
                return lastName;
            }
            public void setLastName(String lastName) {
                this.lastName = lastName;
            }

            public HashSet<UserOrgMap> getUserOrgMap() {
                return userOrgMap;
            }
            public void setUserOrgMap(HashSet<UserOrgMap> userOrgMap) {
                this.userOrgMap = userOrgMap;
            }

            @Override
            public int hashCode() {
                final int prime = 31;
                int result = 1;
                result = prime * result + ((firstName == null) ? 0 : firstName.hashCode());
                result = prime * result + ((lastName == null) ? 0 : lastName.hashCode());
                result = prime * result + ((login == null) ? 0 : login.hashCode());
                result = prime * result + ((userId == null) ? 0 : userId.hashCode());
                result = prime * result + ((userOrgMap == null) ? 0 : userOrgMap.hashCode());
                return result;
            }

            @Override
            public boolean equals(Object obj) {
                if (this == obj)
                    return true;
                if (obj == null)
                    return false;
                if (getClass() != obj.getClass())
                    return false;
                Users other = (Users) obj;
                if (firstName == null) {
                    if (other.firstName != null)
                        return false;
                } else if (!firstName.equals(other.firstName))
                    return false;
                if (lastName == null) {
                    if (other.lastName != null)
                        return false;
                } else if (!lastName.equals(other.lastName))
                    return false;
                if (login == null) {
                    if (other.login != null)
                        return false;
                } else if (!login.equals(other.login))
                    return false;
                if (userId == null) {
                    if (other.userId != null)
                        return false;
                } else if (!userId.equals(other.userId))
                    return false;
                if (userOrgMap == null) {
                    if (other.userOrgMap != null)
                        return false;
                } else if (!userOrgMap.equals(other.userOrgMap))
                    return false;
                return true;
            }

            @Override
            public String toString() {
                return "Users [userId=" + userId + ", login=" + login + ", firstName=" + firstName + ", lastName=" + lastName
                        + ", userOrgMap=" + userOrgMap + "]";
            }


        }

    package com.mongodb.model.user;

    import org.springframework.data.annotation.PersistenceConstructor;

    public class UserOrg {



        private String orgId;
        private String createdbyuser;

        public UserOrg() {
            super();
        }

        public UserOrg(String orgId, String createdbyuser) {
            super();
            this.orgId = orgId;
            this.createdbyuser = createdbyuser;
        }

        public String getOrgId() {
            return orgId;
        }

        public void setOrgId(String orgId) {
            this.orgId = orgId;
        }

        public String getCreatedbyuser() {
            return createdbyuser;
        }

        public void setCreatedbyuser(String createdbyuser) {
            this.createdbyuser = createdbyuser;
        }



        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + ((createdbyuser == null) ? 0 : createdbyuser.hashCode());
            result = prime * result + ((orgId == null) ? 0 : orgId.hashCode());
            return result;
        }

        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            UserOrg other = (UserOrg) obj;
            if (createdbyuser == null) {
                if (other.createdbyuser != null)
                    return false;
            } else if (!createdbyuser.equals(other.createdbyuser))
                return false;
            if (orgId == null) {
                if (other.orgId != null)
                    return false;
            } else if (!orgId.equals(other.orgId))
                return false;

            return true;
        }

        @Override
        public String toString() {
            return "UserOrg [orgId=" + orgId + ", createdbyuser=" + createdbyuser + "]";
        }




    }

 Aggregation aggregation = newAggregation(
                 unwind("userOrgMap")
            );


        AggregationResults<User> groupResults = mongoOperation.aggregate(aggregation,"users", User.class);

        System.out.println(" groupResults raw result "+groupResults.getRawResults().get("result"));

        List<User> result = groupResults.getMappedResults();

System.out.println(" result "+result);


Output : 
groupResults raw result 

[ { "_id" : "user_1" , "login" : "123" , "firstName" : "abc" , "lastName" : "xyz" ,  "userOrgMap" : { "orgId" : "org_1" , "createdbyuser" : "user_2" } , 
  { "_id" : "user_2" ,  "login" : "789" , "firstName" : "qqq" , "lastName" : "aaa" , "userOrgMap" : { "orgId" : "org_1" , "createdbyuser" : "user_3" } 
 ]



 result 

 [
  User [userId=user_1, login=123, firstName=abc, lastName=xyz, userOrgMap=[] ], 
  User [userId=user_2, login=789, firstName=qqq, lastName=aaa, userOrgMap=[],]
 ]


I want to know why userOrgMap array is empty instead of having value similar to the output shown for raw results. 

org.springframework
弹簧芯
4.3.7.1发布
org.springframework
spring上下文
4.3.7.1发布
org.mongodb
mongo java驱动程序
3.0.0
org.springframework.data
spring数据mongodb
1.10.3.1发布
包com.mongodb.model.user;
导入java.util.HashSet;
导入org.springframework.data.annotation.Id;
导入org.springframework.data.annotation.PersistenceConstructor;
导入org.springframework.data.mongodb.core.mapping.Document;
导入com.alta.mongodb.model.user.UserOrgMap;
@文档(collection=“users”)
公共类用户{
公共用户(){
超级();
}
@持久构造函数
公共用户(字符串userId、字符串login、字符串firstName、字符串lastName、,
HashSet(用户组织){
超级();
this.userId=userId;
this.login=登录;
this.firstName=firstName;
this.lastName=lastName;
this.userOrgMap=userOrgMap;
}
@身份证
私有字符串用户标识;
私有字符串登录;
私有字符串名;
私有字符串lastName;
私有HashSet-userOrgMap;
公共字符串getUserId(){
返回用户标识;
}
public void setUserId(字符串userId){
this.userId=userId;
}
公共字符串getLogin(){
返回登录;
}
公共void setLogin(字符串登录){
this.login=登录;
}
公共字符串getFirstName(){
返回名字;
}
public void setFirstName(字符串firstName){
this.firstName=firstName;
}
公共字符串getLastName(){
返回姓氏;
}
public void setLastName(字符串lastName){
this.lastName=lastName;
}
公共HashSet getUserOrgMap(){
返回userOrgMap;
}
public void setUserOrgMap(HashSet userOrgMap){
this.userOrgMap=userOrgMap;
}
@凌驾
公共int hashCode(){
最终整数素数=31;
int结果=1;
result=prime*result+((firstName==null)?0:firstName.hashCode();
result=prime*result+((lastName==null)?0:lastName.hashCode();
result=prime*result+((login==null)?0:login.hashCode();
result=prime*result+((userId==null)?0:userId.hashCode();
result=prime*result+((userOrgMap==null)?0:userOrgMap.hashCode();
返回结果;
}
@凌驾
公共布尔等于(对象obj){
if(this==obj)
返回true;
if(obj==null)
返回false;
如果(getClass()!=obj.getClass())
返回false;
用户其他=(用户)obj;
if(firstName==null){
if(other.firstName!=null)
返回false;
}else如果(!firstName.equals(other.firstName))
返回false;
if(lastName==null){
if(other.lastName!=null)
返回false;
}else如果(!lastName.equals(other.lastName))
返回false;
if(login==null){
if(other.login!=null)
返回false;
}如果(!login.equals(other.login))
返回false;
if(userId==null){
if(other.userId!=null)
返回false;
}如果(!userId.equals(other.userId))
返回false;
if(userOrgMap==null){
if(other.userOrgMap!=null)
返回false;
}如果(!userOrgMap.equals(other.userOrgMap))
返回false;
返回true;
}
@凌驾
公共字符串toString(){
返回“Users[userId=“+userId+”,login=“+login+”,firstName=“+firstName+”,lastName=“+lastName
+,userOrgMap=“+userOrgMap+”];
}
}
包com.mongodb.model.user;
导入org.springframework.data.annotation.PersistenceConstructor;
公共类用户组织{
私有字符串组织;
私有字符串createdbyuser;
公共用户组织(){
超级();
}
公共用户组织(字符串orgId,字符串createdbyuser){
超级();
this.orgId=orgId;
this.createdbyuser=createdbyuser;
}
公共字符串getOrgId(){
回归原点;
}
公共void setOrgId(字符串orgId){
这个
{$project:{userOrgMap:["$userOrgMap"]}}
Aggregation aggregation = newAggregation(
            unwind("userOrgMap"),
            new AggregationOperation() {
               @Override
              public DBObject toDBObject(AggregationOperationContext aggregationOperationContext) {
              return new BasicDBObject("$addFields", new BasicDBObject("userOrgMap", Arrays.asList("$userOrgMap")));
          }
      }
 );