আমি "হেরেডোক" সিনট্যাক্স ব্যবহার করি, যা ডেভিড ইয়ং উল্লেখ করেছেন। তবে একটি ধরা আছে:
#!/usr/bin/sh
mongo <db> <<EOF
db.<collection>.find({
fieldName: { $exists: true }
})
.forEach( printjson );
EOF
উপরেরটি কাজ করবে না, কারণ "$ বিদ্যমান" শব্দটি শেল দ্বারা দেখা যাবে এবং "বিদ্যমান" নামক পরিবেশের ভেরিয়েবলের মান সহ প্রতিস্থাপিত হবে। যা সম্ভবতঃ অস্তিত্বহীন, তাই শেল প্রসারণের পরে এটি হয়ে যায়:
#!/usr/bin/sh
mongo <db> <<EOF
db.<collection>.find({
fieldName: { : true }
})
.forEach( printjson );
EOF
এটি পাস করার জন্য আপনার কাছে দুটি বিকল্প রয়েছে। একজন কুরুচিপূর্ণ, একজন বেশ সুন্দর। প্রথমত, কুৎসিতটি: $ লক্ষণগুলি এড়িয়ে চলুন:
#!/usr/bin/sh
mongo <db> <<EOF
db.<collection>.find({
fieldName: { \$exists: true }
})
.forEach( printjson );
EOF
আমি এটির প্রস্তাব দিচ্ছি না, কারণ পালানো ভুলে যাওয়া সহজ।
অন্য বিকল্পটি হ'ল ইওএফ থেকে পালানো, এর মতো:
#!/usr/bin/sh
mongo <db> <<\EOF
db.<collection>.find({
fieldName: { $exists: true }
})
.forEach( printjson );
EOF
এখন, আপনি আপনার বংশগতিতে আপনার চান সমস্ত ডলার চিহ্ন রাখতে পারেন এবং ডলারের চিহ্নগুলি উপেক্ষা করা হবে। নীচের দিক: আপনার মোঙ্গো স্ক্রিপ্টে শেল প্যারামিটার / ভেরিয়েবলগুলি রাখার প্রয়োজন হলে এটি কাজ করে না।
আর একটি বিকল্প যা আপনি খেলতে পারেন তা হ'ল আপনার শেবাংয়ের সাথে গোলযোগ। উদাহরণ স্বরূপ,
#!/bin/env mongo
<some mongo stuff>
এই সমাধানটিতে বেশ কয়েকটি সমস্যা রয়েছে:
এটি কেবল তখনই কাজ করে যদি আপনি কমান্ড লাইন থেকে একটি মঙ্গো শেল স্ক্রিপ্ট কার্যকর করতে সক্ষম হন। আপনি মঙ্গো শেল কমান্ডের সাথে নিয়মিত শেল কমান্ডগুলি মিশ্রিত করতে পারবেন না। এবং এটি করে আপনি যা কিছু সঞ্চয় করেছেন তা হ'ল কমান্ড লাইনে "মঙ্গো" টাইপ করতে হবে না ... (যথেষ্ট কারণ অবশ্যই)
এটি ঠিক "মঙ্গো <some-js-file>" এর মতো কাজ করে যার অর্থ এটি আপনাকে "<d>" ব্যবহার করতে দেয় না।
আমি শেবাংয়ে ডাটাবেসের নাম যুক্ত করার চেষ্টা করেছি, যা আপনি ভাবেন যে কাজ করবে। দুর্ভাগ্যক্রমে, সিস্টেম যেভাবে শেবাং লাইনটি প্রক্রিয়াকরণ করে, প্রথম স্থানের পরে সমস্ত কিছু একক প্যারামিটার হিসাবে এনভাইড কমান্ডে (যেমন উদ্ধৃত হয়) পাস করার পরে এনভিভি এটি খুঁজে পেতে এবং চালাতে ব্যর্থ হয়।
পরিবর্তে, আপনাকে স্ক্রিপ্টের মধ্যেই ডাটাবেস পরিবর্তন এম্বেড করতে হবে, যেমন:
#!/bin/env mongo
db = db.getSiblingDB('<db>');
<your script>
জীবনের যে কোনও কিছুর মতোই, "এটি করার একাধিক উপায় আছে!"
.find()
অপারেশন, আপনি যেমন দস্তাবেজ, প্রিন্ট করতে ফলাফলের বস্তুর উপর একটি অপারেশন ফোন করতে হবেtoArray()
বাshellPrint()
। যেমন,mongo userdb --eval "printjson(db.users.find().toArray())"