2012-10-12 15 views
5

हम मोंगोडीबी उपयोगकर्ता आधारित प्रमाणीकरण का उपयोग कर रहे हैं, और मैं यह जांचने के लिए जल्दी से एक आदेश चलाता हूं कि उपयोगकर्ता पहले ही डेटाबेस में बनाया गया है या नहीं ऑर्डर करें कि कठपुतली उपयोगकर्ता को बार-बार बनाने का प्रयास नहीं करेगी।मोंगो डीबी कमांड लाइन यह दिखाने के लिए कि कोई उपयोगकर्ता मौजूद है (कठपुतली के लिए 'क्लॉज के लिए)

यहाँ हम कैसे की जाँच करता है, तो प्रतिकृति सेट initialised गया है:

/usr/bin/mongo --host ${members[0]} --quiet --eval 'rs.status().ok' | grep -q 1 

एक समान चाल प्रमाणीकरण के साथ संभव है? मैंने यहां प्रलेखन की जांच की है http://www.mongodb.org/display/DOCS/dbshell+%28mongo%29+Reference और मुझे ऐसा करने का कोई तरीका नहीं दिख रहा है?

उत्तर

13

हां, किसी दिए गए डीबी पर, आप db.system.users.find({user:'login'}).count() का उपयोग कर सकते हैं जो उपयोगकर्ता के मौजूद नहीं होने पर 0 लौटाएगा।

+1

क्या आप 'db.system' का उपयोग करने के बारे में निश्चित हैं? 'Db.users.find (...) नहीं होना चाहिए। गिनती() 'वही करें? – Philipp

+2

'db.users.find (...)। गिनती()' 'उपयोगकर्ताओं के संग्रह में संग्रहीत दस्तावेज़ों की संख्या वापस कर देगा। यह संग्रह विशेष नहीं है और यह मोंगोडीबी प्रमाणीकरण प्रक्रिया से संबंधित नहीं है। –

+0

आह, ठीक है। मैंने सोचा कि ओपी उपयोगकर्ताओं के नाम पर एक सामान्य संग्रह के बारे में बात कर रहा था, डेटाबेस के उपयोगकर्ताओं के बारे में नहीं। – Philipp

1

आज मैं सिर्फ mongo आदेश के लिए -u और -p विकल्पों की कोशिश की और यह मेरे लिए काम किया:

mongo --port 27037 --quiet -u superuser -p pwd 
    --eval "db.system.users.find({user:'user3'}).count()" admin 

नोट पिछले "व्यवस्थापक" आर्ग - यह डेटाबेस का नाम है, जो करने के लिए आप का प्रमाणीकरण कर रहे है।

संबंधित मुद्दे