gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 10:49:49 25 4
gpt4 key购买 nike

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

"users"

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

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

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

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

它给了我一个运行时错误,无法识别提交的“phone”,因为它来自引用集合“userinfo”。我尝试指定“userinfo.phone”等,但没有成功。当从查询中删除“电话”字段时,它工作正常。实现该目标的正确方法是什么?

谢谢!

最佳答案

根据 $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")

关于mongodb - 如何使用 Morphia 从两个 mongoDb 连接集合中检索特定字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42636742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com