gpt4 book ai didi

java - 使用 QueryBuilder 查找包含元素的数组

转载 作者:太空宇宙 更新时间:2023-11-04 13:48:50 25 4
gpt4 key购买 nike

我有一个这样的数据库结构:

{
"_id" : "Foo",
"registrations" : [
101,
102
]
}

我想要做的是创建一个查询,该查询将查找包含“registrations”数组且其中包含值 101 的所有文档。我想使用QueryBuilder如果可能的话,因为我通常发现它更容易使用。

基于this answer ,我尝试使用elemMatch()来查找它,但这似乎没有达到预期的效果:

QueryBuilder.start().put("registrations").elemMatch(new BasicDBObject("_id", 101)).get();

但是,堆栈跟踪表示它正在尝试将 BasicDBObject 转换为 Integer 并且失败。

java.lang.ClassCastException: java.lang.Integer cannot be cast to com.mongodb.DBObject

那么如何使用 QueryBuilder 创建一个查询来查找包含“registrations”数组且其中包含值 101 的所有文档?

最佳答案

经过更多的实验,我发现我想要的是 $in运算符,它允许您检查数组是否包含特定值。对于我的特定查询,我正在寻找的代码是:

QueryBuilder.start().put(registrations).in(Arrays.asList(101)).get();

这将返回 ID 为 "Foo"DBObject

如果我正在寻找多个注册,我可以将它们放入 in() 的参数列表中。

关于java - 使用 QueryBuilder 查找包含元素的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30535873/

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