java - 无法使用 Morphia (MongoDB) 查询嵌套对象
问题描述
我正在使用 Morphia 2.0.2,我正在尝试查询我刚刚保存但没有成功的文档。现在我已经在 Atlas 集群版本 3.6.20 和 4.2.10 上对此进行了测试,但都没有成功。
在这里您可以找到涉及的对象:
@Entity("employees")
data class Employee (
@Id
var _id: String? = ObjectId().toString(),
@Indexed
var name: String? = null,
@Indexed
var foos: MutableList<Foo>? = mutableListOf()
)
data class Foo (
@Indexed
var test: String? = null
)
我已经以这种方式初始化了数据存储,因为我也遇到了类编解码器的问题Foo
:
// In order to avoid the "Can't find a codec for class com.test.morphia.data.Foo." error
val connectionString = ConnectionString("mongodb+srv://$username:$password@$url/$dbname?retryWrites=true&w=majority")
val pojoCodecRegistry: CodecRegistry = fromProviders(PojoCodecProvider.builder().automatic(true).build())
val codecRegistry: CodecRegistry = fromRegistries(MongoClientSettings.getDefaultCodecRegistry(), pojoCodecRegistry)
val clientSettings = MongoClientSettings.builder()
.applyConnectionString(connectionString)
.codecRegistry(codecRegistry)
.build()
val mongoClient = MongoClients.create(clientSettings)
val dataStore = Morphia.createDatastore(mongoClient, dbname)
dataStore.mapper.mapPackage("com.test.morphia.data")
dataStore.ensureIndexes()
然后我保存一个文档并尝试在 foo 对象上查询它:
val employee = Employee(
name = "Marco",
foos = mutableListOf(Foo("test1"), Foo("test2"))
)
dataStore.save(employee)
val result = dataStore.find(Employee::class.java)
.filter(
Filters.eq("foos.test", "test1")
)
执行查询时,我收到此错误:
“无法针对 'com.test.morphia.data.Employee' 解析路径 'foos.test'。”
我应该如何以这种方式查询数据库?我试图查看示例、参考和存储库,但我还没有找到有关如何执行此操作的示例。
编辑:这是文档在 MongoDB 中的外观:
{
"_id":"5f998da6bb8014090ae22549",
"foos":[
{"test":"test1"},
{"test":"test2"}
],
"name":"Marco"
}
解决方案
推荐阅读
- java - 无法在我的 jhipster 应用程序上加载其他配置文件
- python - 在 jupyter notebook 中使用 xlrd 在 python3 中读取 excel 时出错
- java - 我需要在 java 中使用 hashmap 制作图表,但我的代码在 addEdge 函数中显示空指针异常
- reactjs - 如何在反应中使用 push 方法删除添加的 Div?
- docker - 自定义安全表达式根在 docker 上不起作用
- android - FlutterRunArguments 入口点应该是什么?
- memory - 通过图像对象将图像数据传输到 GPU?
- ios - 如何应用新行 bettwen 括号字符串?
- python - 如何获取 NN 的结果,修改结果,然后将其传递给另一个 NN?
- git - 如何将 git 历史重写为包含的合并提交