如何使用Morphia从两个mondoDb连接集合中检索特定字段?

时间:2017-03-06 22:24:08

标签: mongodb morphia

我使用聚合$ lookup加入两个集合。

"users"

{    
"_id" : ObjectId("5984f8c454b1fd6926c324fd"),
    "email" : "administrator@hotmail.com",
    "userId" : "uid",
    "userName" : "admin"
}
"userinfo"

{
    "_id" : ObjectId("59d82812b63f1c31cf906003"),
    "userId" : "uid",
    "phone" : "000000000"
}

我在我的"用户"中使用@Reference(idOnly = true)实体类引用第二个集合。我只想检索特定字段,例如:"电子邮件"," userId","电话"。

Query<Users> query =  usersDAO.createQuery()
                .retrievedFields(true,"email", "userId", "phone")

它给我一个运行时错误,无法识别&#34;手机&#34;提交,因为它来自引用的集合&#34; userinfo&#34;。我试着指定&#34; userinfo.phone&#34;等没有运气。当电话&#34;电话&#34;字段从查询中消除。 什么是实现这一目标的正确方法?

谢谢!

1 个答案:

答案 0 :(得分:0)

根据$ lookup查询,userinfo将添加到用户文档中,其中包含您在查询查询中为“as”字段提到的名称。

所以你应该使用像lookup_as.phone这样的手机

如果查询查询如下


{
    "$lookup": {
        "from": "userinfo",
        "localField": "userId",
        "foreignField": "userId",
        "as": "uinfo"
    }
}

所以在这种情况下你应该使用


    Query query =  usersDAO.createQuery() .retrievedFields(true,"email", "userId", "uinfo.phone")