In đẹp trong shell MongoDB như mặc định


516

Có cách nào để nói với Mongo về đầu ra in đẹp không? Hiện tại, mọi thứ đều được xuất thành một dòng và rất khó đọc, đặc biệt là với các mảng và tài liệu lồng nhau.


Bây giờ: làm thế nào để bạn in nó từ javascript bên ngoài được tải vào Mongo?
Witold Kaczurba

@WitoldKaczurba Hãy thử tìm kiếm câu trả lời cho câu hỏi của bạn. Nếu bạn không tìm thấy câu trả lời, hãy tiếp tục và đăng nó dưới dạng câu hỏi mới.
MForMarlon

Câu trả lời:


868

( lưu ý: đây là câu trả lời cho phiên bản gốc của câu hỏi, không có yêu cầu về "mặc định" )

Bạn có thể yêu cầu nó phải đẹp.

db.collection.find().pretty()

18
Nếu bạn muốn đầu ra được tô màu + các cải tiến khác, hãy xem github.com/TylerBrock/mongo-hacker @SAFX
Ryan Schumacher

Bây giờ: làm thế nào để bạn in nó từ javascript bên ngoài được tải vào Mongo? Điều này sẽ không hoạt động ...
Witold Kaczurba

416

Bạn có thể thêm

DBQuery.prototype._prettyShell = true

$HOME/.mongorc.jstheo mặc định tệp của bạn để cho phép in đẹp trên toàn cầu.


13
Bạn sẽ muốn tạo một chức năng tùy chỉnh vô hiệu hóa nó cho bạn. Thêm phần này vào $HOME/.mongorc.js: gist.github.com/mathrawka/6239405 Sau đó, bạn có thể làm một cái gì đó như db.users.find (). Ugly () để có được nó mà không cần in đẹp.
staackuser2

5
+1 Điều này thật tuyệt. Đối với những người không có tệp .mongorc.js trong thư mục $ HOME; bạn có thể tạo tập tin này và thêm các lệnh trong đó. Sau khi bạn khởi động lại shell, nó hoạt động!
previous_developer

Làm cách nào tôi có thể xác minh trong cli hoặc trong vỏ mongo rằng tùy chọn này đã được bật? Ý tôi là, có một lệnh đặc biệt cho nó, giống như mongo --checkConf 'pretty', không phải bằng cách gọidb.collection.find().limit(1)
Green

1
@ staackuser2, liên kết đó dường như bị hỏng :(
micseydel

Đây phải là câu trả lời được chấp nhận vì câu hỏi được chỉ ra: làm thế nào để biến điều này thành một tùy chọn mặc định. Người dùng đã quen thuộc với phương thức .pretty () nhưng không muốn viết nó mỗi lần
Ariel Monaco

54

(lưu ý: đây là câu trả lời cho câu hỏi cập nhật)

Bạn chỉ có thể làm điều này trên CLI:

echo DBQuery.prototype._prettyShell = true >> ~/.mongorc.js

Và nó sẽ luôn cho kết quả khá.


1
Điều này làm việc cho tôi hoàn hảo. | Phiên bản shell MongoDB: 2.6.7 và phiên bản Oh-My-Zsh e55c715
tjfwalker

20

Vì về cơ bản nó là một trình bao javascript, bạn cũng có thể sử dụng toArray():

db.collection.find().toArray()

Tuy nhiên, điều này sẽ in tất cả các tài liệu của bộ sưu tập không giống như pretty()điều đó sẽ cho phép bạn lặp lại. Tham khảo: http://docs.mongodb.org/manual/reference/method/coder.toArray/


2
Thật thú vị, từ bàn điều khiển, .toArray()hàm tạo ra JSON được định dạng tốt hơn .pretty()hàm. tức là: Bản ghi đầu tiên trong bộ sưu tập của tôi khác với phần còn lại (có thể là vấn đề), nhưng .pretty()bỏ nó thành { "_id" : "VERSION", "v" : "1.5" }- tất cả trên một dòng, trong đó .toArray()định dạng nó đẹp như phần còn lại của các bản ghi ..
wasatchwizard

17

Ồ vậy tôi đoán .pretty () bằng:

db.collection.find().forEach(printjson);

8

Hãy dùng thử Mongo-hacker (mô-đun nút), nó luôn in khá đẹp. https://github.com/TylerBrock/mongo-hacker

Thêm nữa, nó tăng cường trình bao mongo (chỉ hỗ trợ ver> 2.4, ver hiện tại là 3.0), như

  • Tô màu
  • Các lệnh shell bổ sung (đếm tài liệu / đếm tài liệu / vv)
  • Bổ sung API (db.collection.find ({...}). Last (), db.collection.find ({...}). Reverse (), v.v.)
  • Khung tổng hợp

Tôi đang sử dụng trong khi sản xuất env, không có vấn đề nào.


Điều gì xảy ra nếu tôi không có mongodb, chỉ cần cài đặt sao băng?
pieaveragy

Lưu ý: khi bạn cài đặt mongo-hacker bằng cách sử dụng npm, nó dường như ghi đè lên $HOME/.mongorc.js.
Hubro

1

Có câu hỏi nhưng không thể tìm ra cách in nó từ mongo được tải bên ngoài. Vì thế:

Công việc này dành cho bảng điều khiển: và được ưa thích hơn trong bảng điều khiển, nhưng không hoạt động trong javascript được tải bên ngoài:

db.quizes.find().pretty()

Điều này hoạt động trong javscript được tải bên ngoài:

db.quizes.find().forEach(printjson)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.