2012-03-23 62 views
13

我使用Mongoid ruby​​ gem與w/MongoDB進行交互,當我嘗試從查詢中獲取某個東西時,它會添加$limit: -1(即負數),但我希望它只使用1。我試着在控制檯中做同樣的事情,並沒有改變返回哪個文檔。在MongoDB查詢中,什麼是否定限制?

否定限制意味着什麼特別?

回答

8

"OP_QUERY" section of the "Mongo Wire Protocol" documentation的「numberToReturn」標題下有一個負向限制的註釋。

「如果客戶端驅動程序提供了‘限價’的功能(如SQL LIMIT 關鍵字),那麼它是由客戶端驅動程序以確保不超過文件規定數量 返回給調用 應用程序,如果numberToReturn爲0,則db將使用默認的 返回大小,如果數字爲負數,則數據庫將返回 該數字並關閉遊標,可以獲取該查詢的更多結果 。

有關遊標和限制的更多信息,請參閱"Queries and Cursors" documentation,特別是現在刪除的"Execution of queries in batches"部分。

+0

*如果數字是負數,那麼數據庫將返回該數字並關閉光標* - 多麼醜陋的黑客! – 2017-03-31 12:27:53

5

極限值的符號決定了它是「硬極限」還是「軟極限」。 「硬限制」(負號)查詢會在返回最大數量的文檔後關閉光標。如果響應不符合限制指定的文檔數量,「軟限制」會保持光標打開。

+2

你有任何文件來支持它嗎?我以前沒有遇到過這個。 – 2012-03-23 17:08:14

+0

另外,是軟限度 - 正面還是負面? – nicholaides 2012-03-23 17:46:20

+0

更新了答案。將搜索對此的參考。 – Yasser 2012-03-23 18:01:59