# پایگاه‌های داده > NoSQL >  معرفی پایگاه داده MongoDB

## مبین رنجبر

MongoDB یکی از اعضای خانواده NoSQL است که با ساختار JSON ( کمپانی محصول علاقه دارد BSON نام گذاری کند ) کار میکند و سندگرا (Document-Oriented) است.

MongoDB در سال 2007 توسط شرکت 10gen شروع به توسعه شد و در مارس 2010 اولین نسخه آن منتشر شد.این پایگاه داده در واقع به جای ذخیره داده جدول همانند پایگاه های داده ای رابطه ای یا کلاسیک ، داده ها را با ساختار JSON و بدون اسکیمای خاصی (Schema) ذخیره میکند.

این پایگاه داده در حال حاضر توسط شرکت هایی همچون MTV Networks, Craigslist, Foursquare, UIDAI Aadhaar در حال استفاده است.

این پایگاه داده در حال حاضر برای سیستم عامل های ویندوز،مکینتاش،لینوکس و سولاریس توسعه داده شده است.

ویژگی های اصلی این پایگاه داده:

Ad hoc queries
مانگو دی بی می تواند براساس فیلد،محدوده کوئری و رشته منظم(regular expression) چستجو کند.
Indexing
هر فیلدی از مانگو دی بی توانایی شاخص شدن را دارد و میتوان برای یک فیلد بیش از یک شاخص تعریف کرد.
Replication
مانگو دی بی از replication ها و یا انعکاس داده ای اصلی و فرعی (master-slave replication) پشتیبانی میکند.گره اصلی میتواند عملیات خواندن و نوشتن را انجام دهد.و گره فرعی کپی ای از اطلاعات گره اصلی را دارد که میتواند از آنها برای خواندن و یا پشتیبان گیری استفاده کند و همچنین گره فرعی این توانایی را دارد که گره اصلی خود را در مواقع در دسترس نبودن انتخاب و تغییر دهد.
Load balancing
داده های مانگو دی بی می تواند به صورت افقی در دسته هایی به نام Shard ذخیره شود.توضیحات بیشتر : http://en.wikipedia.org/wiki/Sharding
File storage
مانگو دی بی می تواند به عنوان سیستم ذخیره سازی فایل نیز به کار رود.با استفاده از ویژگی GridFS فایل های حجیم و باینری می تواند در ماشین های مختلف ذخیره و فراخوانی شود.
Aggregation
با استفاده از الگوریتم MapReduce پردازش دسته ای داده و تجمعی را انجام داد.از این ویژگی برای برآورده کردن ویژگی GROUP BY در SQL استفاده میشود که شرکت گوگل از آن برای دسته بندی کردن کوئری های خود در موتور جستجوگرش استفاده میکند.
و ...

برای خواندن کامل ویژگی های MongoDB میتوانید به سایت رسمی اش به آدرس : http://www.mongodb.org/display/DOCS/Manual مراجعه کنید.

نمونه هایی از ساختار سندگرا و JSON در زیر آمده است:

{
    "_id": ObjectId("4efa8d2b7d284dad101e4bc9"),
    "Last Name": "DUMONT",
    "First Name": "Jean",
    "Date of Birth": "01-22-1963"
},
{
    "_id": ObjectId("4efa8d2b7d284dad101e4bc7"),
    "Last Name": "PELLERIN",
    "First Name": "Franck",
    "Date of Birth": "09-19-1983",
    "Address": "1 chemin des Loges",
    "City": "VERSAILLES"
}

{
    "_id": ObjectId("4efa8d2b7d284dad101e4bc7"),
    "Last Name": "PELLERIN",
    "First Name": "Franck",
    "Date of Birth": "09-19-1983",
    "phoneNumber": [
        {
            "type": "home",
            "number": "212 555-1234"
        },
        {
            "type": "fax",
            "number": "646 555-4567",
            "verified":  false
        }
    ],
    "Address": {
        "Street": "1 chemin des Loges",
        "City": "VERSAILLES"
    },
    "Months at Present Address":  37
}

----------


## KouroshSharifi

سلام
آقا من تو بحث تایم مشکل دارم چجوری می شه رکورد های مثلا ۱۰ دقیقه پیش  رو گرفت ؟

----------


## مبین رنجبر

> سلام
> آقا من تو بحث تایم مشکل دارم چجوری می شه رکورد های مثلا ۱۰ دقیقه پیش  رو گرفت ؟


دوست عزیز لطفا سوالات خودتون رو در بخش اصلی مطرح کنید و در تاپیک ها مطرح نکنید.اگر پایگاه داده شما MongoDB است میتونید در زمان ثبت ، تاریخ ثبت رو یک فیلد و یا آرایه ای از ثانیه و دقیقه و ساعت ثبت کنید و با استفاده از دستور کنترلی $lte , و $gte داکیومنت هایی که 10 دقیقه پیش ثبت شده اند رو بازیابی کنید.

----------


## behi1ty

سلام دوستان من یک وبلاگ ثبت کردم برای آموزش MongoDB، می خواستم نظر شما عزیزان را هم در باره وبلاگ خودم بدونم، ممنون
http://meanframework.blog.ir

----------

