我可以多次限制查找结果的数量吗?
原因是我现在向现有应用程序的结果添加了一个排序选项。我已经限制了分页的结果集,但是如果我另外排序,首先必须对整个结果进行排序,然后跳过/限制结果。
我不关心100%准确的结果,但不想让数据库太忙。所以我正在尝试的是:
MyCollection.find(pattern).limit(somelargenumber).sort({score:desc}).skip(0).limit(10);
db.books.find().limit(1).sort({weightedRating:-1}).limit(10);
我可以多次限制查找结果的数量吗?
不。如果你做了
db.test.find(query).limit(1).sort(sort).limit(10)
那么使用.limit
所完成的全部工作就是将限制设置为10。
db.test.find({ "a" : 22 }).sort({ "b" : -1 })
很难理解您在寻找什么,但听起来您只想对查询返回的第一个n
结果进行排序,而不是对给定排序返回查询的第一个n
结果。可以使用聚合框架:
db.test.aggregate([
{ "$match" : query },
{ "$limit" : limit },
{ "$sort" : sort }
])
这将根据排序
对查询
的限制
结果进行排序。它不会返回由顺序sort
确定的第一个limit
结果匹配查询;它返回限制
匹配查询
的文档,按排序
排序,但不能保证这些匹配的文档如何符合所有匹配排序
的结果的总体顺序。这将为查询
使用索引(如果有的话),并且如果限制
相对较小(例如<100),排序将不昂贵。
如果有人以某种方式选择了所有文档,我希望防止错误的响应时间,在这种情况下不准确的结果是可以的
驱动程序版本为: 我的问题是,当我使用api find和一些来自java的过滤器时,操作需要15秒。 我检查了mongo服务器日志文件,发现跟踪是一个命令,而不是一个查询: 2015-09-01T12:11:47.496+0200I命令[conn503]命令b.$CMD命令:计数{count:“logs”,查询:{timestamp:{$GTE:新日期(1433109600000)},aplica
问题内容: 我想对MongoDB驱动程序作出承诺。我写了以下代码: 您是否知道为什么在调用该方法时为什么没有输出: 问题答案: 手动散布API是很危险的,我建议采取以下措施: 有了Bluebird的承诺,它看起来就像:
问题内容: 我们当前的连接配置如下所示: 并且已在当前版本(源代码)中弃用,并将被删除:“此方法无法替代。使用connectTimeout属性控制连接超时。” 我认为重试和连接超时是两回事。有谁知道为什么改变了它以及它有什么(内部)含义? 问题答案: 关于autoConnectRetry的含义有很多困惑。大多数人认为这意味着,如果操作由于IOException而失败,驱动程序将重试该操作,直到ma
我正在尝试使用MongoDBJava驱动程序作为聚合命令的一部分创建查询。目前我允许日期范围或特定日期数组作为参数。例如 日期范围查询工作正常,我解析xml并将其转换为在mongo中生成以下查询的DBObject; 对于指定日期,我只想返回在给定日期的00:00:00.000和第二天的00:00:00.000之间发生的结果。根据我对mongo查询的基本了解,我希望做一个类似于日期范围的$匹配,但是
我正在尝试将Java程序连接到远程Oracle数据库。在网上做了一些研究之后,我决定最简单的方法是使用Oracle JDBC驱动程序。我下载并运行了jar文件,得到了消息“****JCE UNLIMITED STRENGTH已安装*****”问题是,当我尝试将驱动程序添加到我的类路径(javac-classpath ojdbc8.jar Connect.java)时,我不断收到一条错误消息,说“包
服务器上的mongodb版本将比驱动程序版本旧。我的java驱动程序版本是3.6,Mongo-版本显示我是2.4 我该怎么解决这个问题?