在MongoDB查询中,负数限制意味着什么?

15
我正在使用Mongoid ruby gem与MongoDB交互,当我尝试从查询中获取某个东西时,它会添加$limit: -1(即负一),而我希望它只使用1。我在控制台中尝试了相同的操作,但返回的文档没有改变。一个负的限制是否有特殊含义?
2个回答

9
在“Mongo Wire Protocol”文档的{{link1:“OP_QUERY”部分下,“numberToReturn”标题下有关负限制的说明。

“如果客户端驱动程序提供了“limit”功能(例如SQL LIMIT关键字),则由客户端驱动程序确保不返回超过指定数量的文档到调用应用程序。如果numberToReturn为0,则数据库将使用默认返回大小。如果数字为负数,则数据库将返回该数字并关闭游标。无法获取该查询的更多结果。”

有关游标和限制的更多信息,请参见{{link2:“Queries and Cursors”文档}},特别是现已删除的{{link3:“Execution of queries in batches”}}部分。

如果这个数字是负数,那么数据库将返回该数字并关闭游标——真是一个丑陋的hack! - Lukasz Wiktor

5

限制值的符号决定了它是“硬限制”还是“软限制”。一个“硬限制”(负号)查询在返回它能够返回的最大文档数之后关闭游标。一个“软限制”保持游标开启,以防响应不能容纳指定数量的文档。


2
你有任何文件可以支持这个吗?我之前没有遇到过这个。 - mu is too short
此外,软限制是正数还是负数? - nicholaides
@nicholaides:我在Marc的回答中添加了一个文档链接 - Dan Dascalescu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接