当前位置: 首页 > 知识库问答 >
问题:

性能Mongodb java驱动程序

微生城
2023-03-14

驱动程序版本为:

<!-- MongoDB driver-->
<dependency>
  <groupId>org.mongodb</groupId>
  <artifactId>mongo-java-driver</artifactId>
  <version>3.0.3</version>
</dependency>

我的问题是,当我使用api find和一些来自java的过滤器时,操作需要15秒。

....
Iterable<Document> messageList = collection.find().filter(... some filters).sort(... fields);

// Find documents
for (Document message : messageList) {
....
// some code
....
}

我检查了mongo服务器日志文件,发现跟踪是一个命令,而不是一个查询:

2015-09-01T12:11:47.496+0200I命令[conn503]命令b.$CMD命令:计数{count:“logs”,查询:{timestamp:{$GTE:新日期(1433109600000)},aplicacion:“app1”,事件:“event1”}}plansummary:IXSCAN{timestamp:1,aplicacion:1}keyupdates:0 writeconflicts:0 numyields:19089 reslen:44 locks:{global:{acquirecount:{r:19090}}收藏:{acquirecount:{r:19090}}}14297ms

如果我从mongodb客户机(Robomongo)运行相同的查询,需要0.05毫秒。

db.getCollection('logs').find({ timestamp: { $gte: new Date(1427839200000) }, aplicacion: "APP1", event: "Event1" })

并且在服务器日志中是作为查询

使用驱动程序java命令进行的所有查询(find、aggregate,...)都被转换了吗?性能比mongo Shell差很多。

共有1个答案

松钊
2023-03-14

我认为问题是当您在mongo shell中运行查询时,它一次只返回前20个结果,这里您试图读取所有文档并将其放入数组

尝试此查询并查看

List messageList=collection.find(filter).sort(...field).limit(20).into(new ArrayList());

 类似资料:
  • 我的目标是使用聚合框架创建一个管道来对我的数据进行分组,然后将这个管道与java驱动程序一起使用。MongoDB v4.0.3 我使用MongoDB Compass创建了以下管道(减少到重要部分): 这导致以下(生成的)Java代码: 集合中$组阶段之前的数据如下所示: $组阶段应返回以下数据结构: 问题所在 Mongo Compass按预期预览了阶段的结果,但使用java驱动程序的阶段的结果非常

  • 我正在尝试编写一个Java函数,将单词列表插入到集合中。我想为每个单词的唯一字段“单词”一个文档。我要插入的单词列表包含许多重复的单词,所以我希望我的函数只在集合中没有具有相同“word”值的文档时才插入文档。如果已经有一个具有相同“单词”值的文档,该函数不应该改变或替换这个文档,而是继续插入我的列表中的下一个单词。 我在字段“word”上创建了一个索引,以避免重复的文档并捕获重复的键Except

  • 我在表1中的MongoDB中有10000条记录。 我在0.08秒内得到10000条记录的结果。 现在,同样的查询m在nodejs中使用mongodb本地驱动程序运行,在15秒内得到结果。 我不明白为什么这两者之间有这么大的区别。我不知道我在nodejs中做错了什么。我已经用mongodb本地驱动程序在nodejs中编写了相同的查询。

  • 问题内容: 我在将Chrome驱动程序用于Selenium时遇到问题。我已下载chromedriver,并将其保存到C:\ Chrome: 使用它给我以下错误: 任何帮助,将不胜感激。 问题答案: 您应该指定可执行文件路径,而不是包含可执行文件的目录路径。

  • 我正在使用Selenium来自动化测试。我的应用程序只使用IE,它不适用于其他浏览器。 代码: 这是我得到的错误 驱动程序可执行文件的路径必须由webdriver.ie.driver系统属性设置;有关更多信息,请参阅https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver.最新版本可从以下网站下载:http://www.s

  • 我试图通过网络驱动程序在“http://www.kayak.co.in/?ispredir=true”中选择入住和退房时间。无法选择任何日期。请帮帮我。