MongoDB kabuğunda varsayılan olarak güzel baskı


516

Mongo'ya güzel çıktılar vermesini söylemenin bir yolu var mı? Şu anda, her şey tek bir satıra çıktı ve özellikle iç içe diziler ve belgelerle okunması zor.


Şimdi: Mongo'ya yüklenen harici javascript'ten nasıl yazdırabilirsiniz?
Witold Kaczurba

@WitoldKaczurba Sorunuzun yanıtını aramayı deneyin. Bir cevap bulamazsanız, devam edin ve yeni bir soru olarak gönderin.
MForMarlon

Yanıtlar:



416

Ekleyebilirsin

DBQuery.prototype._prettyShell = true

$HOME/.mongorc.jsvarsayılan olarak global olarak güzel yazdırmayı etkinleştirmek için dosyanıza ekleyin .


13
Sizin için devre dışı bırakan özel bir işlev yapmak istersiniz. Bunu ekleyin $HOME/.mongorc.js: gist.github.com/mathrawka/6239405 Sonra güzel baskı olmadan almak için db.users.find (). Ugly () gibi bir şey yapabilirsiniz.
staackuser2

5
+1 Bu harika. $ HOME klasöründe .mongorc.js dosyası olmayanlar için; bu dosyayı oluşturabilir ve içine komutlar ekleyebilirsiniz. Kabuğu yeniden başlattıktan sonra çalışır!
previous_developer

Bir cli veya mongo kabuğunda bu seçeneğin etkinleştirildiğini nasıl doğrulayabilirim? Demek istediğim, bunun için özel bir komut var mı, mongo --checkConf 'pretty'arayarak değildb.collection.find().limit(1)
Green

1
@ staackuser2, bu bağlantı kopmuş gibi görünüyor :(
micseydel

Sorunun işaret ettiği gibi bu kabul edilen cevap olmalıdır: bunu nasıl varsayılan bir seçenek haline getirebilirim? Kullanıcı zaten .pretty () yöntemini biliyor ancak her seferinde yazmak istemiyor
Ariel Monaco

54

(not: bu güncellenmiş sorunun cevabıdır)

Bunu sadece CLI'de yapabilirsiniz:

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

Ve her zaman güzel sonuçlar verecektir.


1
Bu benim için mükemmel çalıştı. | MongoDB kabuk sürümü: 2.6.7 ve Oh-My-Zsh sürümü e55c715
tjfwalker

20

Temelde bir javascript kabuğu olduğundan, şunları da kullanabilirsiniz toArray():

db.collection.find().toArray()

Ancak, bu, pretty()yinelemenize izin verecek şekilde koleksiyonun tüm belgelerini yazdırır . Bakınız: http://docs.mongodb.org/manual/reference/method/cursor.toArray/


2
İlginçtir ki, konsoldan .toArray()işlevden daha iyi biçimlendirilmiş JSON çıktısı verir .pretty(). yani: benim koleksiyonun ilk kaydı (sorun olabilir) diğerlerinden farklı olmakla .pretty()olarak dışarı döker { "_id" : "VERSION", "v" : "1.5" }- bir satırda, tüm .toArray()kayıtların geri kalanı gibi güzel biçimlendirilmiş ..
wasatchwizard

17

Oh yani sanırım .pretty () eşittir:

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

8

Mongo-hacker'ı (düğüm modülü) deneyin, her zaman güzel yazdırır. https://github.com/TylerBrock/mongo-hacker

Daha fazla mongo kabuğunu geliştirir (sadece ver> 2.4'ü destekler, mevcut sürüm 3.0'dır),

  • renklendirme
  • Ek kabuk komutları (belge sayma / belge sayma / vb.)
  • API Eklemeleri (db.collection.find ({...}). Last (), db.collection.find ({...}). Reverse (), vb.)
  • Toplama Çerçevesi

Üretimde env yaparken kullanıyorum, henüz sorun yok.


Mongodb'um yoksa az önce meteor yüklü mü?
pihentagy

Not: npm kullanarak mongo-hacker yüklediğinizde, görünüşe göre üzerine yazılır $HOME/.mongorc.js.
Hubro

1

Soruyu buldum ancak harici olarak yüklenmiş mongodan nasıl yazdırılacağını anlayamadım. Yani:

Bu konsol için geçerlidir: konsolda tercih edilir, ancak harici mongo yüklü javascript'te çalışmaz:

db.quizes.find().pretty()

Bu, harici mongo yüklü javscript'te çalışır:

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.