db.foo.find().limit(300)
不會這樣做。它仍然只打印20個文件。如何在MongoDB的shell中打印出超過20個項目(文檔)?
db.foo.find().toArray()
db.foo.find().forEach(printjson)
都將打印出的每個文檔,而不是1行版本的非常擴展視圖find()
:
db.foo.find().limit(300)
不會這樣做。它仍然只打印20個文件。如何在MongoDB的shell中打印出超過20個項目(文檔)?
db.foo.find().toArray()
db.foo.find().forEach(printjson)
都將打印出的每個文檔,而不是1行版本的非常擴展視圖find()
:
DBQuery.shellBatchSize = 300
會做。
MongoDB Docs - Getting Started with the mongo Shell - Executing Queries
您可以使用it
外殼的內部迭代在未來20個結果。只要輸入it
,如果你看到「有更多」,你會看到接下來的20個項目。
哦它實際上是關於如何打印出所有不使用'it' – 2010-09-14 01:37:16
感謝哈夫丹,你兩次你的用戶名會說你是! – 2013-09-09 12:05:00
整個想法是不使用迭代器 – 2016-09-18 16:45:07
從,如果你想顯示所有的結果,你可以做db.collection.find().toArray()
讓所有的結果,而它的外殼。
這幫了我:) – GeekedOut 2012-06-04 15:15:00
這。如果你只是想把它們全都放在一個外殼中,這樣就可以剪切和粘貼,這就足夠了。 – superluminary 2016-08-04 10:43:02
這一個更有用 – anwerj 2017-02-21 11:33:38
總是可以做:
db.foo.find().forEach(function(f){print(tojson(f, '', true));});
要獲得緊湊視圖。
而且,我發現它非常有用,以限制被找到那麼返回的字段:
db.foo.find({},{name:1}).forEach(function(f){print(tojson(f, '', true));});
這會從富只返回_id和名稱字段。
我喜歡這種方式,因爲它可以運行在shell腳本中(mongo客戶端使用'--eval') – 2013-09-26 03:21:08
@鄭凱如果您使用腳本而不是shell,那麼shellBatchSize不相關,因爲您的結果不會由shell重複了你,你必須自己動手。 – 2013-11-06 04:36:26
tojson()正是我期待從DBQuery轉換它,謝謝你! – 2015-10-26 17:10:47
在mongo shell中,如果返回的遊標未使用var關鍵字分配給變量,則會自動迭代遊標以訪問匹配查詢的前20個文檔。您可以設置DBQuery.shellBatchSize變量來更改自動迭代文檔的數量。
參考 - https://docs.mongodb.com/v3.2/reference/method/db.collection.find/
有沒有辦法讓這個持久? – 2016-06-21 12:20:03
@LukaszWiktor是的,您可以創建一個$ HOME/.mongorc.js文件並將該shellBatchSize設置放在那裏。我的查詢批量大小設置和啓用rs.slaveOk()。它的使用情況在通過命令行使用--eval時也略有不同。請參閱:https://docs.mongodb.com/manual/mongo/#mongorc-js-file – 2016-12-03 17:56:00
太棒了!謝謝@matiaselgart – 2016-12-03 17:58:25