问题标签 [mongo-java-driver]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - MongoDB比较聚合管道中的文档字段
我有一系列文件,如下所示:
我想检索字段 $bornIn 等于字段 $city.name 的所有文档。我需要将其作为管道的中间阶段,所以我不能使用 $where 运算符。
我在网上搜索,我发现了一个建议来实现这样的东西:
但它既不能通过 shell 也不能通过 Java 驱动程序工作,因为它将字段标记为不同。为了完整起见,我报告了我的代码:
你有什么建议吗?我正在使用 MongoDB 3.2,我需要通过 Java 驱动程序来执行此操作。
谢谢!!
PS。这无关紧要,但实际上上面的文档是集合“城市”和“人”之间的 $lookup 阶段的输出,加入 $name/$mayor.. 太酷了!:D :D
java - MongoCursor 没有 count() 方法?
所以我的代码是:
现在我想知道total count
之前的文件skip
和limit
。
完全相同的问题有一个答案,但我有,而且mongo-java-driver v3.1.0
我使用的 API 不同。FindIterable和MongoCursor类中没有方法count()
或没有方法。谢谢!size()
更新
似乎唯一的解决方法是再次调用 mongodb:collection.count
正如@Philipp 所说
mongodb - 如何从 java 程序运行 mongo 查询?
我们从 mongo-shell 运行的查询,我想从 java 程序运行相同的查询。我怎样才能做到这一点?
mongodb - 在使用 java api 的 mongodb 版本 3 中,我们如何在查询时给出提示
在使用 java api 的 mongodb 版本 3 中,我们如何在查询时给出提示查询结果是 FindIterable,它具有 MongoCursor。 我应该如何提示使用特定索引。
对于旧版本,DBCursor 有 API 用于提示。
java - 如何在 MongoDB java 驱动程序 3.0 中使用可选部分构建查询
我想创建使用可选查询部分组成数据库查询的方法。
在过去,我可以编写如下方法:
如何使用新的 MongoDB Java 驱动程序 3.0 来完成它
我尝试了类似的东西
但是所有过滤器方法都返回 BSON 无法Document
流畅地转换。似乎不能那样使用过滤器......非常没用。
我想念什么吗。如何明智地做到这一点?
java - 是否需要锁定mongodb中的每个文档?
我是 MongoDB 的新手。我正在通过这个链接:
https://docs.mongodb.org/getting-started/java/query/
我的问题是:
目的是什么
有人可以解释什么是Block
andapply
吗?
我只想读取 mongodb 中存在的数据。我不想更改其中存在的数据。
mongodb - 如何将 com.mongodb.BasicDBList 转换为 Scala 中有用的东西?
到目前为止,我能够使用 mongo-hadoop-core 1.4.2 从 MongoDB 检索数据。我要操作的数据是我正在查询的集合中每个文档内的嵌入文档内的数组内的值,我需要这些值作为Double
's. 从集合中检索到的数据的类型为 RDD[(Object, org.bson.BSONObject)],这意味着每个文档都是一个类型的元组 (Object, org.bson.BSONObject)。
每当我想获得嵌入文档时,我都会这样做(在 spark-shell 1.5.1 上工作):
将 Object 类型转换为 BasicDBObject 非常不方便,但我需要这样做才能使用get(key: String)
. 我也可以使用.asInstanceOf[BasicDBObject]
, match {case x: BasicDBObject => x}
但有没有更好的方法??使用类中的继承方法可以直接获取特定类型,如Double
、和。Int
String
Date
BasicBsonObject
至于BasicDBList
,有一个get(key: String)
方法,继承自BasicBsonList
,它返回一个Object
可以转换为Double
但只能使用.asInstanceOf[Double]
调用的方法,还有一个toArray()
继承自返回一个我不能转换为java.util.ArrayList
的数组,即使我正在做这里:Object
Double
.map(_.asInstanceOf[Double])
但有时它会起作用。在某些文档中,此演员表有效,而在其他文档中则无效,并在上方打印该错误消息。这可能是 MongoDB 给出的数据结构中的一个问题,火花,但只是在这些文档中?具有 30 个值的较小数组似乎总是有效。
到目前为止,我的解决方案是这种低效的转换:
我在这里遗漏了什么或者事情真的很不方便吗?为什么所有这些方法都必须返回Object
or BSONObject
?有什么办法可以克服我发现的这个问题吗?java.lang.Integer
如果数组中没有整数被强制转换为双精度,这从何而来?
java - pymongo collection.find() 与 java MongoDatabse.getCollection.find()
当我将从 MongoDB java 驱动程序函数返回的 org.bson.Document 传递给 elasticsearchMongoDatabase.getCollection().find()
索引时,我得到以下异常。
这是代码,
但是在传递从返回的 pymongo 文档时没有收到这样的错误MongoClient().mydb.collection_name.find()
这些 API 有什么区别?与 pymongo 的 find() API 等效的 java 是什么?
java - MongoDB 访问数据无需 Java Driver
有没有办法在没有 java 驱动程序的情况下执行 mongo 查询,并在 java 中获取原始字符串响应?
mongo 服务器 <---> mongo 客户端使用什么协议?
谢谢!
mongodb-java - MongoIterable.forEach 与 Iterable.forEach
MongoIterable.forEach
需要Block
与 Java 8 非常相似的 a Consumer
。它们相似到足以导致问题,例如,以下内容无法编译:
因为编译器无法在Iterable.forEach( Consumer )
and之间做出决定MongoIterable.forEach( Block )
。解决此问题需要解决方法,例如显式键入参数:
或者,将MongoIterable
其视为普通Stream
:
为什么MongoIterable.forEach
不使用Consumer
接口定义,例如:MongoIterable.forEach(Consumer<? super TResult> consumer)
?更好的是——为什么要forEach
加入MongoIterable
呢?