UbuntuServerWithMongoDB_username_alithecodeguy_password_123456.ova
1.2 GB
یکی از مشکلات اصلی برنامه نویسای بک اند مخصوصا هنگام آموزش یا تمرین یا برای محیطهای تستی ، راه اندازیه منگو دیبیه. مخصوصا که فیلتر و تحریمم هستیم. به خاطر همین این فایل ایمیج رو درست کردم تا درگیر مسایل جانبی نشیم دیگه و تمرکزمون رو بزاریم روی کد :
سیستم عامل اوبونتو سرور همراه با دیتابیس MongoDB نصب شده و آماده کار.
فایل .ova برای ماشین مجازی.
آپدیت شده و آپگرید شده.
همه راهنماهاش موقع ورود نمایش داده میشه.
به صورت ریموت هم میتونید بهش وصل بشید ، یا بوسیله کد و درایور یا بوسیله کامپس.
برای استفاده روی VirtualBox یک آداپتور Host-Only با آدرس زیر بسازید و بهش اضافه کنید:
192.168.56.1
ubuntu version : server 20.04
mongodb version : 4.4.4
username : alithecodeguy
password : 123456
تمام کارهاش رو خودم انجام دادم. مشکلی بود از طریق alithecodeguy در ارتباط باشید.
#linux #mongodb #database @alithecodeguy
سیستم عامل اوبونتو سرور همراه با دیتابیس MongoDB نصب شده و آماده کار.
فایل .ova برای ماشین مجازی.
آپدیت شده و آپگرید شده.
همه راهنماهاش موقع ورود نمایش داده میشه.
به صورت ریموت هم میتونید بهش وصل بشید ، یا بوسیله کد و درایور یا بوسیله کامپس.
برای استفاده روی VirtualBox یک آداپتور Host-Only با آدرس زیر بسازید و بهش اضافه کنید:
192.168.56.1
ubuntu version : server 20.04
mongodb version : 4.4.4
username : alithecodeguy
password : 123456
تمام کارهاش رو خودم انجام دادم. مشکلی بود از طریق alithecodeguy در ارتباط باشید.
#linux #mongodb #database @alithecodeguy
روی MongoDB اگر میخواهید ببینید که مقدار مورد نظرتون داخل آرایه ای که روی یک فیلد ذخیره شده ، وجود داره یا نه ، سراغ روشهای عجیب غریب نرید. از ویژگی های خود منگو استفاده کنید. برای مثال بالا بنویسید :
db.<collection_name>.find( { tags: "red" } )
خروجیش میشه همه documentهایی که مقدار red یکی از اعضای tags داخلشونه.
ولی حواستون باشه اگر بخواهید بیشتر از یک آیتم رو روی یک آرایه چک کنید باید ترتیب هم رعایت کنید مثلا :
db.<collection_name>.find( { tags: [ "blank", "red" ] } )
برای چک کردن nested object ها هم از همچین سینتکسی برای مثال بالا میتونید استفاده کنید :
db.<collection_name>.find( { "size.uom": "in" } )
در آخر هم برای اینکه فقط چندتا فیلد رو برگردونید میتونید بنویسید :
db.<collection>.find( {}, { _id: 0, item: 1, status: 1 } );
معنی ۱ این میشه که اون فیلد رو برگردون ، صفر هم میشه برنگردون. وقتی از این روش استفاده میکنید همه فیلدها صفر میشه به جز اونا که خودتون ۱ کردید و فیلد _id. برای اینکه فیلد _id هم نیاد باید صریحا مقدارش رو صفر کنید.
نکته : بهتره که مقدار _id رو توی ریسپانس برنگردونید
#mongodb #nosql
db.<collection_name>.find( { tags: "red" } )
خروجیش میشه همه documentهایی که مقدار red یکی از اعضای tags داخلشونه.
ولی حواستون باشه اگر بخواهید بیشتر از یک آیتم رو روی یک آرایه چک کنید باید ترتیب هم رعایت کنید مثلا :
db.<collection_name>.find( { tags: [ "blank", "red" ] } )
برای چک کردن nested object ها هم از همچین سینتکسی برای مثال بالا میتونید استفاده کنید :
db.<collection_name>.find( { "size.uom": "in" } )
در آخر هم برای اینکه فقط چندتا فیلد رو برگردونید میتونید بنویسید :
db.<collection>.find( {}, { _id: 0, item: 1, status: 1 } );
معنی ۱ این میشه که اون فیلد رو برگردون ، صفر هم میشه برنگردون. وقتی از این روش استفاده میکنید همه فیلدها صفر میشه به جز اونا که خودتون ۱ کردید و فیلد _id. برای اینکه فیلد _id هم نیاد باید صریحا مقدارش رو صفر کنید.
نکته : بهتره که مقدار _id رو توی ریسپانس برنگردونید
#mongodb #nosql
نکته : در Mongodb ، مقدار ()Date با ()new Date ظاهر یکسانی دارن ولی از Typeهای مختلفی هستن. اولی String برمیگردونه ولی دومی Date. در واقع اگر دنبال معادلش میگردین مقدار ()new Date دقیقا برابره با ()ISODate
واحد زمانی هم که منگو استفاده میکنه مشابه چیزیه که بقیه حوزه های کامپیوتر ازش استفاده میکنن. در واقع یک استاندارد جهانیه.
تعداد میلی ثانیه ها از مبدا یکم ژانویه ۱۹۷۰ رو به فرم یک signed 64-bit integer برمیگردونه که میتونید به شکل های مختلف فرمتش کنید که مثلا به حالت سال ماه روز یا چیزای مشابه نمایش بده.
#mongodb #nosql
واحد زمانی هم که منگو استفاده میکنه مشابه چیزیه که بقیه حوزه های کامپیوتر ازش استفاده میکنن. در واقع یک استاندارد جهانیه.
تعداد میلی ثانیه ها از مبدا یکم ژانویه ۱۹۷۰ رو به فرم یک signed 64-bit integer برمیگردونه که میتونید به شکل های مختلف فرمتش کنید که مثلا به حالت سال ماه روز یا چیزای مشابه نمایش بده.
#mongodb #nosql
قواعد انتخاب نام در Mongodb :
۱- به بزرگی و کوچکی حروف حساس نیست.
۲- از بعضی کاراکترها در شرایط زیر نمیتوانید استفاده کنید :
الف) اگر منگو روی ویندوز دیپلوی شده است : /\. "$*<>:|?
ب) اگر منگو روی لینوکس و یونیکس بیس ها دیپلوی شده است : /\. "$
۳- نمیتواند شامل فضای خالی باشد
۴- حداکثر ۶۴ کاراکتر
۵- اسامی باید با یک _ یا حرف شروع شود و نمیتواند شامل موارد زیر باشد :
الف) $ ( اسامی فیلدها نباید با این شروع شوند)
ب) رشته خالی
ج) null
د) نمیتواند با کلمه system شروع شود.
نکته خیلی مهم : قواعد نام گذاری در منگو مثل زبانهای برنامه نویسی یک قاعده کلی نیست. و برای اسامی دیتابیس ها ، کالکشنها و فیلدها قواعد متفاوتی وجود دارد و ۵ مورد بالا در واقع اشتراک این قوانین است. سعی کنید از همین قواعد مشترک استفاده کنید تا بعدا سردرگم نشوید.
#mongodb #nosql
۱- به بزرگی و کوچکی حروف حساس نیست.
۲- از بعضی کاراکترها در شرایط زیر نمیتوانید استفاده کنید :
الف) اگر منگو روی ویندوز دیپلوی شده است : /\. "$*<>:|?
ب) اگر منگو روی لینوکس و یونیکس بیس ها دیپلوی شده است : /\. "$
۳- نمیتواند شامل فضای خالی باشد
۴- حداکثر ۶۴ کاراکتر
۵- اسامی باید با یک _ یا حرف شروع شود و نمیتواند شامل موارد زیر باشد :
الف) $ ( اسامی فیلدها نباید با این شروع شوند)
ب) رشته خالی
ج) null
د) نمیتواند با کلمه system شروع شود.
نکته خیلی مهم : قواعد نام گذاری در منگو مثل زبانهای برنامه نویسی یک قاعده کلی نیست. و برای اسامی دیتابیس ها ، کالکشنها و فیلدها قواعد متفاوتی وجود دارد و ۵ مورد بالا در واقع اشتراک این قوانین است. سعی کنید از همین قواعد مشترک استفاده کنید تا بعدا سردرگم نشوید.
#mongodb #nosql
رقصنده با کد
روی MongoDB اگر میخواهید ببینید که مقدار مورد نظرتون داخل آرایه ای که روی یک فیلد ذخیره شده ، وجود داره یا نه ، سراغ روشهای عجیب غریب نرید. از ویژگی های خود منگو استفاده کنید. برای مثال بالا بنویسید : db.<collection_name>.find( { tags: "red" } ) خروجیش میشه…
توی منگو برای دسترسی به ایندکس خاصی روی یک آرایه ، میتونید از دات نونتیشن (همون نقطه) روی یک فیلد به همراه ایندکس مد نظرتون استفاده کنید ، ولی ۲ تا نکته رو مد نظر داشته باشید :
۱- ایندکس ها از صفر شروع میشن.
۲- هر جا از دات نوتیشن استفاده کردید ، فیلد و ایندکس با هم دیگه باید داخل کوتیشن نوشته بشن. مثال :
db.<collection_name>.find({"tags.1":"red"})
یه نکته پیشرفته هم اگر بخوام بگم اینه اگر میخواید روی همه آیتمهای یک آرایه روی یک فیلد مشترک در همه داکیومنت های یک کالکشن ، کار خاصی رو انجام بدید ، میتونید از positional operator یا همون []$ استفاده کنید. مثال :
db.students.update(
{ },
{ $inc: { "grades.$[]": 10 } },
{ multi: true }
)
فیلد multi : true به خاطر اینه که داریم از update استفاده میکنیم
#mongodb #nosql
۱- ایندکس ها از صفر شروع میشن.
۲- هر جا از دات نوتیشن استفاده کردید ، فیلد و ایندکس با هم دیگه باید داخل کوتیشن نوشته بشن. مثال :
db.<collection_name>.find({"tags.1":"red"})
یه نکته پیشرفته هم اگر بخوام بگم اینه اگر میخواید روی همه آیتمهای یک آرایه روی یک فیلد مشترک در همه داکیومنت های یک کالکشن ، کار خاصی رو انجام بدید ، میتونید از positional operator یا همون []$ استفاده کنید. مثال :
db.students.update(
{ },
{ $inc: { "grades.$[]": 10 } },
{ multi: true }
)
فیلد multi : true به خاطر اینه که داریم از update استفاده میکنیم
#mongodb #nosql
آخرین نسخه MongoDB روی سیستم های 32 بیتی نصب نمیشه. در واقع از ورژن ۳.۴ به بعد دیگه نصب نمیشه.
همچنین فقط روی ویندوز ۱۰ ، مک او اس ۱۰.۱۳ و ابونتو ۱۶.۰۴ به بعد نصب میشه. دنبال نصبش روی ورژنهای قبلی نباشید.
اگر مجبورید روی سیستم ضعیفی ازش استفاده کنید برید سراغ ورژنهای قبل از ۳.۴.
برای دوستان رد هتیمون هم ، درجریان باشید که منگو روی کرنلهای UEK کار نمیکنه و باید از کرنل RHCK استفاده کنید.
سعی کنید برای محیط آزمایشگاهیتون ، منگو رو روی لینوکس نصب کنید چون به احتمال قریب به یقین ، محیط productionتون روی لینوکس خواهد بود مگر اینکه واقعا بدونید بعدا از چی میخواید استفاده کنید.
#mongodb #nosql
همچنین فقط روی ویندوز ۱۰ ، مک او اس ۱۰.۱۳ و ابونتو ۱۶.۰۴ به بعد نصب میشه. دنبال نصبش روی ورژنهای قبلی نباشید.
اگر مجبورید روی سیستم ضعیفی ازش استفاده کنید برید سراغ ورژنهای قبل از ۳.۴.
برای دوستان رد هتیمون هم ، درجریان باشید که منگو روی کرنلهای UEK کار نمیکنه و باید از کرنل RHCK استفاده کنید.
سعی کنید برای محیط آزمایشگاهیتون ، منگو رو روی لینوکس نصب کنید چون به احتمال قریب به یقین ، محیط productionتون روی لینوکس خواهد بود مگر اینکه واقعا بدونید بعدا از چی میخواید استفاده کنید.
#mongodb #nosql
برای کار به دیتابیس منگو راههای زیادی هست. اکثرا میرن سراغ استفاده از نرم افزار گرافیکی compass ولی بدونید که خیلی کار مدیریتی خاصی نمیتونید باهاش انجام بدید و اگر گیر کنید باید بیاید سراغ shell.
معروفترینشون که همه میشناسن mongo shell هستش ، ولی بدونید منگو داره روی شل دیگه ای کار میکنه به نام mongosh که هنوز فقط ورژن بتاش رو داده.
شل mongo به صورت پیش فرض همراه با دیتابیس منگو نصب میشه ولی به صورت مجزا هم میتونید نصبش کنید که در ادامه چندتا مثال ازش میارم.
راه اندازی شل mongo: (اگر مسیر فایل اجرایی به PATH اضافه شده باشه)
$mongo
اتصال شل mongo به یک پورت دیگه به جز پورت پیش فرض ۲۷۰۱۷:
$mongo --port 28015
وصل شدن به یک دیتابیس ریموت :
$mongo "mongodb://mongodb0.example.com:28015"
یا
$mongo --host mongodb0.example.com:28015
یا
$mongo --host mongodb0.example.com --port 28015
وصل به شدن به سرور ریموت اگر یوزر پسوورد گذاشته باشید: (بعد از اتصال پسوورد میخواد)
$mongo "mongodb://[email protected]:28015/?authSource=admin"
#mongodb #nosql
معروفترینشون که همه میشناسن mongo shell هستش ، ولی بدونید منگو داره روی شل دیگه ای کار میکنه به نام mongosh که هنوز فقط ورژن بتاش رو داده.
شل mongo به صورت پیش فرض همراه با دیتابیس منگو نصب میشه ولی به صورت مجزا هم میتونید نصبش کنید که در ادامه چندتا مثال ازش میارم.
راه اندازی شل mongo: (اگر مسیر فایل اجرایی به PATH اضافه شده باشه)
$mongo
اتصال شل mongo به یک پورت دیگه به جز پورت پیش فرض ۲۷۰۱۷:
$mongo --port 28015
وصل شدن به یک دیتابیس ریموت :
$mongo "mongodb://mongodb0.example.com:28015"
یا
$mongo --host mongodb0.example.com:28015
یا
$mongo --host mongodb0.example.com --port 28015
وصل به شدن به سرور ریموت اگر یوزر پسوورد گذاشته باشید: (بعد از اتصال پسوورد میخواد)
$mongo "mongodb://[email protected]:28015/?authSource=admin"
#mongodb #nosql
مسیر فایل های منگو دی بی دیگه مثل قبل به صورت پیش فرض /data/db نیست. مثلا اگر از مک ورژن کاتالینا به بعد استفاده میکنید اصلا اجازه همچین کاری رو بهتون نمیده که توی روت همچین کارایی کنید. داکیومت نسخه منگویی که استفاده میکنید برای سیستم عاملی که دارید استفاده میکنید رو بخونید قبل از اینکه شروع کنید.
#nosql #mongodb
#nosql #mongodb