问题标签 [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.

0 投票
1 回答
759 浏览

mongodb - MongoDB更新原子操作

我只是在学习 MongoDB 并将 URL 缩短器作为 POC 实现。我正在阅读关于 NodeJS/Mongoose 的教程并看到了这个方法:

更新和回调操作都是原子的吗?还是只有更新操作是原子的?

如果两者都是原子的,如何在 Java 中做到这一点?Mongo-java-driver 有这个方法

但显然不支持回调。任何帮助表示赞赏。

0 投票
1 回答
1889 浏览

mongodb - MongoException:java.lang.OutOfMemoryError:超出 GC 开销限制

我正在批量写入 MongoDB 并收到 OOM 异常(java.lang.OutOfMemoryError:超出 GC 开销限制)。我有两个问题:

  1. OOM 是来自 Mongo Client Driver 还是 MongoDB Server?
  2. 是否有线索为什么会发生 OOM?

FO 2016-11-15 15:19:10,437 - [TS] org.mongodb.driver.cluster info(71) - WritableServerSelector 从集群描述 ClusterDescription{type=UNKNOWN,connectionMode=MULTIPLE,all=[ServerDescription{地址=mongo.server1-or:30000, type=UNKNOWN, state=CONNECTING}, ServerDescription{address=mongo.server2:30000, type=UNKNOWN, state=CONNECTING}, ServerDescription{address=mongo.server3:30000, type=未知,状态=连接}]}。在超时之前等待 30000 毫秒 INFO 2016-11-15 15:19:11,448 - [TS] org.mongodb.driver.cluster info(71) - WritableServerSelector 从集群描述中未选择服务器 ClusterDescription{type=UNKNOWN, connectionMode=多个,全部=[ServerDescription{address=mongo.server1-or:30000, type=UNKNOWN, state=CONNECTING}, ServerDescription{address=mongo.server2:30000, type=UNKNOWN, state=CONNECTING}, 服务器描述{地址=mongo.server3:30000,类型=未知,状态=连接}]}。在超时之前等待 30000 毫秒 INFO 2016-11-15 15:19:14,324 - [TS] org.mongodb.driver.cluster info(76) - 连接到服务器 mongo.server2:30000 com.mongodb 时监控线程出现异常.MongoException:java.lang.OutOfMemoryError:在 com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:125) 在 com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:128) 处超出 GC 开销限制java.lang.Thread.run(Thread.java:745) 原因:java.lang.OutOfMemoryError:超过 GC 开销限制 INFO 2016-11-15 15:19:14,325 - [TS] com.xyz.executors.ConsumeMessageTask 运行(45) - 计划线程池将写入 MongoDB INFO 2016-11-15 15:19:14,325 - [TS] org.mongodb。driver.connection info(71) - 打开连接 [connectionId{localValue:28690}] 到 mongo.server3:30000 错误 2016-11-15 15:19:17,353 - [TS] com.xyz.executors.ConsumeMessageTask run(117) - 批量写入 MongoDB com.mongodb.MongoTimeoutException 时出错:在等待与 WritableServerSelector 匹配的服务器时超时 30000 毫秒。集群状态的客户端视图是 {type=UNKNOWN, servers=[{address=mongo.server1-or:30000, type=UNKNOWN, state=CONNECTING}, {address=mongo.server2:30000, type=UNKNOWN, state=CONNECTING , 异常={com.mongodb.MongoException: java.lang.OutOfMemoryError: GC 开销限制超出}, 由{java.lang.OutOfMemoryError: GC 开销限制超出}}, {address=mongo.server3:30000, type=UNKNOWN , state=CONNECTING}] 在 com.mongodb.connection.BaseCluster.createTimeoutException(BaseCluster.java:

0 投票
0 回答
69 浏览

java - MongoDB Java:存储和增加 2x2 矩阵

我正在构建一个模型,允许用户在 mongodb 中配置表并根据行、列名递增值。下面是我的模型:

当一个新对象被保存时,我用全 0 填充矩阵,

我的用例是,当遇到行和列的单词时,我需要增加相应的数字。列和行的标签存储在相应的列表中。所以,我正在尝试做这样的事情:

但是,我似乎无法找到/形成可以同时执行这两种操作的查询(即返回索引和更新值)。另一种方法是通过 id 获取文档并在 Java 中增加它,但这需要两次 db 调用。

有没有其他方法可以做到这一点?我应该改变我的模型吗?

0 投票
1 回答
2737 浏览

mongodb - 更新 MongoDB 中的嵌套数组文档

所以我有一个像这样的 mongo 文档,我需要根据 val 更新数组

这是我尝试过的代码

更新工作正常,但如果查找失败则不会更新这是我得到的错误:

com.mongodb.MongoWriteException:位置运算符未从查询中找到所需的匹配项。未扩展更新:com.mongodb.MongoCollectionImpl.executeSingleWriteRequest(MongoCollectionImpl.java:558) 处的 BASIC.tin.$.val.mongoCollectionImpl.update(MongoCollectionImpl.java:542)

0 投票
0 回答
771 浏览

mongodb - 在java中的mongodb中动态创建数据库

有没有办法使用 3.x Java 驱动程序在 mongo 中动态创建一个新数据库,同时添加一个具有已定义角色的用户?

0 投票
1 回答
498 浏览

mongodb - 无法从 java 驱动程序连接到 MongoLab

我有 Mongolab 帐户,该帐户中只有一个用户。

我可以使用 MongoChef 工具连接到数据库,但是当我尝试使用 java 驱动程序 3.2.0 从 Eclipse 中连接到该数据库时,我不断遇到身份验证失败。我收到以下错误。我在 Java 7 上。

编辑 用于连接到 MongoLab 托管的 MongoDB 实例的 Java 代码。

尝试连接时收到异常。

0 投票
2 回答
5576 浏览

java - java代码在编译时在mongodb中给出错误

我是 mongodb 的新手,我有以下代码

我在编译时收到以下错误

注意:使用 mongo 3.4.1

新代码:

编译没有错误但运行时错误

0 投票
1 回答
1301 浏览

mongodb - Mongo DB Java 3.x 驱动程序 - 按查询分组

我想学习如何group by使用Mongo DB Java 3.x Driver. 我想通过 对我的集合进行分组,并按结果对结果usernames进行排序。countDESC

这是我想实现Java等效的shell查询:

这是Java我实现的代码:

我需要的结果是按username. countOfResults返回集合拥有的文档总数

0 投票
0 回答
44 浏览

json - Mongo db 和在查询中使用地图

我是 mongo 的新手,我正在尝试找出查询,我正在使用 java 驱动程序

我在数据库中有一个文件如下

现在我想对文档做一个 upsert 并且只在它不存在时更新它

我有以下内容,如果它不存在我想插入它,如果它存在则更新。

当我尝试在过滤器和文档中设置 json 的“其他”部分时似乎有问题,它不起作用。如果我从过滤器和 documentToInsertUpdate 中删除“其他”部分,它工作正常。

我如何处理第二部分,即

0 投票
1 回答
1517 浏览

mongodb - 如何在 MongoDB 中聚合对象数组中的值

我存储来自汽车的文档,并希望将所有梅赛德斯汽车的温度作为数组获取,查询应该如何在 Mongodb 中进行?

我想为所有梅赛德斯汽车选择温度并接收它。结果应该像 [20,50]

编辑:我的代码看起来像下面使用 JAVA 的 iam: