gpt4 book ai didi

java - Mongo 3.2 Java 驱动程序 - 查找和计数操作

转载 作者:行者123 更新时间:2023-12-01 09:29:28 26 4
gpt4 key购买 nike

我有一个包含许多带有整数数组的文档的集合。我试图查找集合中的任何位置是否存在设置/编号。在 shell 中它工作正常:

> db.col.find({ settings: { $elemMatch: { $eq : 310403 } } }).count()
1
> db.col.find({ settings: { $elemMatch: { $eq : 310403 } } },{_id:1})
{ "_id" : 897 }
> db.albums.find({ images: { $elemMatch: { $eq : 310404 } } }).count()
0

但我无法通过 Java 驱动程序使其工作。但我不知道如何判断 find 是否确实找到了一些东西。

FindIterable<Document> checkForSetting;
for (int i = 0; i < 1000000; i++) {
checkForSetting = col.find(new Document("settings",new Document("$eleMatch",new Document("$eq",i)))).projection(new Document("_id",1));
if ( null, empty, not found,etc) {
...do something
}
}

我觉得我不知何故让这件事变得比应有的更加困难。在 shell 中,这是理所当然的。我真的很讨厌必须遍历每个集合的文档来检查数组中是否存在数字,但我花费了更多的时间来尝试找到“有效”的方法,而不是暴力破解它。

最佳答案

基本上,您有两种不同的情况:

(a) 迭代集合,并为每个结果做好准备。这是您使用 find 和您在问题中声明的 FindIterable 的地方。

(b) 获取计数,这与您的 shell 示例中的完全相同:

 col.count(<whateverfilter>)

顺便说一句:您确实应该看看实用程序类“过滤器”和“投影”。您的代码使用旧且丑陋的风格,对于 3.x 系列的 java 驱动程序来说不再需要这种风格。

关于java - Mongo 3.2 Java 驱动程序 - 查找和计数操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39566165/

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