gpt4 book ai didi

java - 使用 Morphia 在另一个集合中获取引用的 mongodb 文档

转载 作者:行者123 更新时间:2023-12-01 13:32:49 26 4
gpt4 key购买 nike

我一直在努力解决这个问题......我在用户和组集合中有以下引用文档。

群组文档

{
"_id" : ObjectId("52eabc9914cc8d6cc1e6f723"),
"className" : "org.xxxxxx.sms.core.domain.Group",
"name" : "CE Play group",
"description" : "CE Play group",
"creationdate" : ISODate("2014-01-30T20:56:57.848Z"),
"user" : DBRef("users", ObjectId("52ea69c714ccd207329b2476"))
}
{
"_id" : ObjectId("52ea69c714ccd207329b2477"),
"className" : "org.xxxxxx.sms.core.domain.Group",
"name" : "Default",
"description" : "Default sms group",
"creationdate" : ISODate("2014-01-30T15:03:35.916Z"),
"user" : DBRef("users", ObjectId("52ea69c714ccd207329b2476"))
}

用户文档

{
"_id" : ObjectId("52ea69c714ccd207329b2476"),
"className" : "org.xxxxxx.core.domain.User",
"username" : "jomski2009",
"firstname" : "Jome",
"lastname" : "Akpoduado",
"email" : "jomea@example.com",
"active" : true,
"usergroups" : [
DBRef("groups", ObjectId("52ea69c714ccd207329b2477")),
DBRef("groups", ObjectId("52eabc9914cc8d6cc1e6f723"))
]
}

我有一个 Morphia Datastore 单例对象,该对象已在类中设置,用于检索用户组并执行一些操作。假设我想使用提供的用户名“jomski2009”获取名为“Default”的组,我如何在 Morphia 中实现此目的,而不将用户组作为列表获取并迭代组列表以找到我想要的组? p>

谢谢。

最佳答案

DBRef 在 Mongo 中用作客户端概念。 MongoDB 不进行连接,因此 DBRef 的目的是将一个位置移交给客户端以从中获取所需对象。这是由不同的客户端库以不同的方式处理的。

如果您的应用程序这样做可行,您可能需要考虑使用 Embedded Annotation而不是引用类型。或者至少除了对象引用之外,还应在组对象中包含用户名列表。这将允许您在查询中过滤这些内容。

此外,值得考虑将任何唯一标识符(例如“用户名”)移动到文档的 _id 字段,只要它始终是唯一的。主键查找总是更快。

关于java - 使用 Morphia 在另一个集合中获取引用的 mongodb 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21468239/

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