در قسمت قبلی مفاهیم MongoDB را به اختصار توضیح دادم. در این بخش به شرح دستورات ابتدایی در MongoDB می پردازم.
در MongoDB برای ساخت دیتابیس از <use <DB_NAME استفاده می شود.
برای مثال تکه کد زیر دیتابیس mydb را ایجاد (رزرو) کرده و به آن connect می شود. در ادامه توضیح داده می شود که این دستور به منزله ساخت دیتابیس نیست.
> use mydb switched to db mydb
برای مشاهده دیتابیس connect شده از دستور زیر استفاده می کنیم:
> db mydb
برای مشاهده لیست دیتابیس ها از دستور زیر استفاده می کنیم:
> show dbs admin 0.000GB config 0.000GB local 0.000GB
نکته: برای نمایش دیتابیسی که به تازگی ساخته شده است باید حتما یک رکورد در آن insert کرد.
برای حذف یک دیتابیس از دستور زیر استفاده می کنیم:
db.dropDatabase()
مثال
>show dbs local 0.78125GB mydb 0.23012GB test 0.23012GB mydb 0.840256B
>db.dropDatabase() >{ "dropped" : "mydb", "ok" : 1 }
>show dbs local 0.78125GB test 0.23012GB
db.createCollection(name, options)
در دستور بالا name نام collection و option که اختیاری است تنظیمات مربوط به size و indexing را مشخص می کند و از بین گزینه های (capped, autoIndexId, size, max) انتخاب می شود.
مثال
>use test switched to db test >db.createCollection("mycollection") { "ok" : 1 }
برای نمایش لیست collection های یک دیتابیس از دستور زیر استفاده می کنیم:
>use test switched to db test >show collections mycollection
نکته: در MongoDB نیازی به ساخت collection نیست، با insert اولین مقدار collection به صورت اتوماتیک ساخته می شود.
از دستور زیر برای حذف یک collection استفاده می شود:
db.COLLECTION_NAME.drop()
در MongoDB هم مانند سایر پایگاه داده ها انواع مختلف data type را در اختیار داریم. از انواع دیتا تایپ های مورد استفاده می توان بهString, Boolean, Double, Arrays, Timestamp, Object, Null, Symbol, Date, Object ID, Binary data, Code و Regular expression اشاره کرد.
ورود اطلاعات در MongoDB با استفاده از دستور db.COLLECTION_NAME.insert(document) صورت می گیرد.
مثال
> db.users.insert({ ... _id : ObjectId("507f191e810c19729de860ea"), ... title: "MongoDB Overview", ... description: "MongoDB is no sql database", ... by: "tutorials point", ... url: "http://www.tutorialspoint.com", ... tags: ['mongodb', 'database', 'NoSQL'], ... likes: 100 ... }) WriteResult({ "nInserted" : 1 })
نکته: در صورتی که collection مورد نظر وجود نداشته باشد آنگاه MongoDB آن را ساخته و سپس insert را انجام می دهد.
نکته: در صورتی که id_ را مشخص نکنیم آنگاه MongoDB به صورت اتوماتیک یک فیلد با مقدار منحصر به فرد از نوع unique ObjectId در collection ایجاد می کند.
متد ()insertOne:
> db.empDetails.insertOne( { First_Name: "Radhika", Last_Name: "Sharma", Date_Of_Birth: "1995-09-26", e_mail: "radhika_sharma.123@gmail.com", phone: "9848022338" }) { "acknowledged" : true, "insertedId" : ObjectId("5dd62b4070fb13eec3963bea") }
متد ()insertMany:
برای insert چند رکورد همزمان از این متد استفاده می شود.
> db.empDetails.insertMany( [ { First_Name: "Radhika", Last_Name: "Sharma", Date_Of_Birth: "1995-09-26", e_mail: "radhika_sharma.123@gmail.com", phone: "9000012345" }, { First_Name: "Rachel", Last_Name: "Christopher", Date_Of_Birth: "1990-02-16", e_mail: "Rachel_Christopher.123@gmail.com", phone: "9000054321" }, { First_Name: "Fathima", Last_Name: "Sheik", Date_Of_Birth: "1990-02-16", e_mail: "Fathima_Sheik.123@gmail.com", phone: "9000054321" } ] ) { "acknowledged" : true, "insertedIds" : [ ObjectId("5dd631f270fb13eec3963bed"), ObjectId("5dd631f270fb13eec3963bee"), ObjectId("5dd631f270fb13eec3963bef") ] }
برای استخراج داده ها از collection ها از این متد استفاده می کنیم.
>db.COLLECTION_NAME.find()
متد ()prety:
برای نمایش ساختاریافته داده های استخراج شده از متد find از ()prety استفاده می کنیم.
>db.COLLECTION_NAME.find().pretty()
متد ()findOne:
معادل ()first یا ()one در سایر پایگاه های داده است و یک رکورد را برمیگرداند.
>db.COLLECTIONNAME.findOne()
مثال
> db.mycol.findOne({title: "MongoDB Overview"}) { "_id" : ObjectId("5dd6542170fb13eec3963bf0"), "title" : "MongoDB Overview", "description" : "MongoDB is no SQL database", "by" : "tutorials point", "url" : "http://www.tutorialspoint.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
متد find به همراه AND:
>db.mycol.find({ $and: [ {<key1>:<value1>}, { <key2>:<value2>} ] })
مثال
> db.mycol.find({$and:[{"by":"tutorials point"},{"title": "MongoDB Overview"}]}).pretty() { "_id" : ObjectId("5dd4e2cc0821d3b44607534c"), "title" : "MongoDB Overview", "description" : "MongoDB is no SQL database", "by" : "tutorials point", "url" : "http://www.tutorialspoint.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
متد find به همراه OR:
>db.mycol.find( { $or: [ {key1: value1}, {key2:value2} ] } ).pretty()
مثال
>db.mycol.find({$or:[{"by":"tutorials point"},{"title": "MongoDB Overview"}]}).pretty() { "_id": ObjectId(7df78ad8902c), "title": "MongoDB Overview", "description": "MongoDB is no sql database", "by": "tutorials point", "url": "http://www.tutorialspoint.com", "tags": ["mongodb", "database", "NoSQL"], "likes": "100" }
متد find به همراه AND و OR:
مثال
>db.mycol.find({"likes": {$gt:10}, $or: [{"by": "tutorials point"}, {"title": "MongoDB Overview"}]}).pretty() { "_id": ObjectId(7df78ad8902c), "title": "MongoDB Overview", "description": "MongoDB is no sql database", "by": "tutorials point", "url": "http://www.tutorialspoint.com", "tags": ["mongodb", "database", "NoSQL"], "likes": "100" }
>db.COLLECTION_NAME.find( { $not: [ {key1: value1}, {key2:value2} ] } )
مثال
> db.empDetails.find( { $nor:[ 40 {"First_Name": "Radhika"}, "Last_Name": "Christopher"} ] } ).pretty() { "_id" : ObjectId("5dd631f270fb13eec3963bef"), "First_Name" : "Fathima", "Last_Name" : "Sheik", "Age" : "24", "e_mail" : "Fathima_Sheik.123@gmail.com", "phone" : "9000054321" }
متد find به همراه NOT:
>db.COLLECTION_NAME.find( { $NOT: [ {key1: value1}, {key2:value2} ] } ).pretty()
مثال
> db.empDetails.find( { "Age": { $not: { $gt: "25" } } } ) { "_id" : ObjectId("5dd6636870fb13eec3963bf7"), "First_Name" : "Fathima", "Last_Name" : "Sheik", "Age" : "24", "e_mail" : "Fathima_Sheik.123@gmail.com", "phone" : "9000054321" }
در MongoDB دو متد update و save جهت به روزرسانی داده های collection ها استفاده می شود.
>db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)
مثال
>db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
نکته: به طور پیشفرض MongoDB ویرایش اطلاعات را روی یک document انجام می دهد. در صورتی که بحواهیم چندین document را ویرایش کنیم باید پارامتر multi را true ست کنیم.
>db.mycol.update({'title':'MongoDB Overview'}, {$set:{'title':'New MongoDB Tutorial'}},{multi:true})
این متد تنها یک document را update می کند.
>db.COLLECTION_NAME.updateOne(<filter>, <update>)
این متد همه document هایی که با شرط مطابق باشند را update می کند.
>db.COLLECTION_NAME.update(<filter>, <update>)
این متد document فعلی را با document ارسال شده جایگزین می کند.
>db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
مثال
>db.mycol.save( { "_id" : ObjectId("507f191e810c19729de860ea"), "title":"Tutorials Point New Topic", "by":"Tutorials Point" } )
متد remove برای حذف یک document از collection در دسترس است.
>db.COLLECTION_NAME.remove(DELLETION_CRITTERIA)
مثال
>db.mycol.remove({'title':'MongoDB Overview'})
نکته: برای حذف یک document مطابق با شرط از دستور زیر استفاده می شود:
>db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
نکته: برای حذف document های یک collection از دستور زیر استفاده می کنیم:
> db.mycol.remove({})