‏نمایش پست‌ها با برچسب NoSQL. نمایش همه پست‌ها
‏نمایش پست‌ها با برچسب NoSQL. نمایش همه پست‌ها

۱۳۹۴/۰۸/۲۳

نوشته شده توسط Reza Alizadeh Majd
دسته بندي: , , , ,

درصورتی که قصد داشته باشیم document هایی از یک collection خاص را براساس شرطی بر روی یکی از فیلد های از نوع آرایه ای آنها پیدا کنیم میتونیم از عبارت $elemMatch بصورت زیر استفاده کنیم:


مثال اول:

فرض میکنیم collection ما شامل موارد زیر باشد:


{ _id: 1, results: [ 82, 85, 88 ] }
{ _id: 2, results: [ 75, 88, 89 ] }


در این صورت برای پیدا کردن document هایی که قیلد result آنها دارای عدد ۸۸ است بصورت زیر عمل میکنیم:

db.collection.find({
    results: { $elemMatch: 88 }
})


همچنین میتوان از شرط های پیچیده تری استفاده نمود:

db.collection.find({
    results: {
        $elemMatch: { $gte: 80, $lt: 85 }
    }
})


مثال دوم (آیتم های آرایه از نوع آبجکت):

فرض میکنیم collection ما شامل موارد زیر باشد:

{ _id: 1, results: [ { product: "abc", score: 10 }, { product: "xyz", score: 5 } ] }
{ _id: 2, results: [ { product: "abc", score: 8 }, { product: "xyz", score: 7 } ] }
{ _id: 3, results: [ { product: "abc", score: 7 }, { product: "xyz", score: 8 } ] }

برای یافتن مواردی که در آنها product ی با مقدار score بزرگتر مساوی 8 باشد بصورت زیر عمل میکنیم:

db.collection.find({
    results: {
        $elemMatch: {
            product: "xyz",
            score: { $gte: 8 }
        }
    }
})


۱۳۹۳/۱۰/۲۵

نوشته شده توسط Reza Alizadeh Majd
دسته بندي: , , , ,

اگه تا بحال راجع به بانک های اطلاعاتی NoSQL شنیده باشید، حتما اسم MongoDB رو هم شنیدید. یک بانک اطلاعاتی Document Based که اطلاعات رو بصورت داکیومنت هایی به فرمت JSON ذخیره میکنه.
الان یه مدته که من هم سر و کارم به این بانک اطلاعاتی افتاده و دارم ازش استفاده میکنم. از این به بعد نکاتی رو که در رابطه با MongoDB بهشون بر میخورم رو هم تو این وبلاگ داکیومنت میکنم تا شاید بعدا به درد خودم یا کس دیگه ای بخوره.

خوب یکی از مواردی که تو کار با MongoDB ممکنه بهش بر بخوریم تغییر نام یک دیتابیس هستش. از اونجایی که خود MongoDB (حداقل تا الان) دستوری رو برای این منظور نداره و باید برای اینکار بصورت دیگه ای عمل کنیم. که در ادامه به چند روش انجام این کار اشاره میکنم:

تغییر نام بوسیله کپی کردن بانک اطلاعاتی:


یکی از روش هایی که برای تغییرنام میتونیم استفاده کنیم کپی بانک و پاک کردن نسخه قدیمی اون از روی سرور هستش، برای اینکار بصورت زیر عمل میکنیم:

> db.copyDatabase('old_database', 'new_database')
> use old_database
> db.dropDatabase()

تغییر نام بوسیله Backup\Restore:


MongoDB برای Backup گیری از بانک ها و همچنین برگردوندن Backup ها دو تا دستور mongodump و mongorestore رو ارائه داده که میشه از اونها برای backup گیری از دیتابیس و برگردوندن backup با اسم جدید از اونها استفاده کرد. برای این منظور بصورت زیر عمل میکنیم:

mongodump --db old_database
mongorestore --db new_database /path/to/old_db_backup

پس از برگردوندن backup به سرور وصل میشیم و نسخه قدیمی رو با دستور dropDatabase پاک میکنیم:

mongo

> use old_database
> db.dropDatabase()