آشنایی با دستور InsertOne در مانگو دی‌ بی

آشنایی با دستور InsertOne در مانگو دی‌ بی

در این مقاله مقاله آشنایی با دستور ()InsertOne در مانگو دی‌ بی از بخش آموزش مانگو دی بی پس از آشنایی با مبانی مانگو دی بی و آشنایی کامل با انواع data type در مانگو دی بی می خواهیم در مانگو دی‌ بی با استفاده از متد ()InsertOne بتوانیم یک سند Document (فقط یک سند) را به Collection در پایگاه داده اینسرت یا اضافه کنیم.

متد ()InsertOne در مانگو دی‌ بی چه کاربردی دارد؟

شما با استفاده از متد ()InsertOne می توانید یک سند document جدیدی را به کالکشنی Collection در پایگاه داده مانگو دی بی اضافه یا insert کنید.

معرفی متد ()InsertOne در مانگو دی‌ بی

متد ()InsertOne در مانگو دی بی به شما اجازه می‌دهد یک سند document را به collection اضافه یا اینسرت کنید.

ساختار متد ()InsertOne به شکل دستور زیر می‌باشد:

db.collection.insertOne(
   <document>,
   { writeConcern: <document>}
)

متد ()InsertOne دو آرگومان و پارامتر ورودی دارد:

پارامتر document مشخص کننده‌ی سندی document است که ما می‌خواهیم به collection اینسرت کنیم.

پارامتر document یک پارامتر ضروری می‌باشد (یعنی مشخص کردن مقدار این پارامتر لازم می باشد).

پارامتر writeConcern یک پارامتر اختیاری می‌باشد و مشخص کننده سطح درخواست‌های تائید شده از مانگو دی‌ بی را برای عملیات اینسرت در سرور مانگو دی‌ بی محلی standalone MongoDB server یا سرورهای اشتراکی shared clusters را مشخص و توصیف می‌کند.

ما در ادامه در خصوص پارامتر writeConcern بیشتر صحبت خواهیم کرد.

متد ()InsertOne زمانی اجرا شود و سندی با موفقیت ایجاد شود میاد در واقع یک سند document دیگری با دو ستون یا دو پارامتر در خروجی بر می‌گرداند:

  • کلید acknowledged یک مقدار با نوع داده‌ای boolean می‌باشد که اگر عملیات اینسرت و مقادیر پارامتر write concern با موفقیت اجرا شود مقدار true را بر می گرداند و اگر عملیات با خطا مواجه شود و مقادیر پارامتر write concern انجام نشود مقدار برابر false خواهد شد.
  • insertedId فیلد یا پارامتر id_ که در سندی document که در حال حاضر اینسرت شده است را ذخیره می‌کند و نمایش می‌دهد.

* توجه داشته باشید که در زمان اینسرت سند document در مانگو دی‌ بی اگر کالکشن collection در پایگاه داده وجود نداشته باشد اما در دستور اینسرت متد ()InsertOne صدا زده شود در زمان اینسرت کالکشن collection (در صورت نبودن collection ) collection را ایجاد می‌کند و سند جدید را در کالکشن collection ایجاد شده اینسرت می‌کند.

اگر در زمان اینسرت document سند جدید در کالکشن collection مقدار فیلد id_ را مشخص نکنید مانگو دی‌ بی به صورت خودکار یک مقدار منحصر به‌ فردی unique از ObjectId قبل از درج سند document جدید تولید کرده و به ستون id_ اختصاص می‌دهد و سپس سند document جدید در کالکشن collection اضافه و یا اینسرت خواهد شد.

اگر در زمان اینسرت سند document جدید در کالکشن collection مقدار فیلد id_ را مشخص کنید در نظر بگیرید این مقدار در کالکشن collection موردنظر باید و حتماً منحصر به‌ فرد unique باشد تا به شما اجازه‌ی اینسرت سند document جدید را بدهد در غیر این صورت به شما خطا duplicate key error خواهد داد.

* برای درج و اینسرت چندین سند document (به صورت هم‌زمان) در کالکشن از متد ()InsertMany می‌توان استفاده کرد.

مثال‌هایی از متد ()InsertOne در مانگو دی‌ بی

در اولین مرحله از طریق ابزار MongoDB Shell به سرور مانگو دی‌ بی متصل شده و سپس از طریق دستور زیر به پایگاه داده bookdb ارتباط برقرار می‌کنیم:

mongosh bookdb

1) یک سند document جدیدی بدون مشخص کردن مقدار فیلد id_ اینسرت می‌کنیم.

در مثال‌ زیر ما با استفاده از متد ()InsertOne یک سند document جدیدی به کالکشن collection به نام books اضافه و اینسرت می‌کنیم:

db.books.insertOne({ 
    title: 'MongoDB insertOne',
    isbn: '0-7617-6154-3'
});

خروجی دستور بالا به شکل زیر نمایش داده می‌شود:

{
        "acknowledged" : true,
        "insertedId" : ObjectId("5f31cf00902f22de3464ddc4")
}

در مثال بالا، شما از طریق متد ()InsertOne بدون در نظر گرفتن مقدار فیلد id_ سند document جدیدی در کالکشن collection اینسرت و اضافه کردید.

بنابراین مانگو دی‌ بی برای فیلد id_ یک مقدار منحصر به‌ فردی unique از ObjectId تولید کرده و برای آن

اختصاص می‌دهد.

برای مشاهده‌‌ی سندی document که در حال حاضر اینسرت کرده‌اید را می‌توانید از دستور متد ()fine مانند دستور زیر استفاده کنید:

db.books.find()

خروجی دستور به شکل زیر نمایش داده خواهد شد:

[
  {
    _id: ObjectId("621489fcf514a446bf1a98ea"),
    title: 'MongoDB insertOne',
    isbn: '0-7617-6154-3'
  }
]

2) یک سند document جدیدی با مشخص کردن مقدار فیلد id_ اینسرت می‌کنیم.

در مثال زیر با استفاده از متد ()InsertOne یک سند document جدیدی به کالکشن collection اضافه و اینسرت می‌کنیم.

نکته این است که در این مرحله مقدار فیلد id_ به صورت دستی مشخص می‌کنیم:

db.books.insertOne({
   _id: 1,
   title: "Mastering Big Data",
   isbn: "0-9270-4986-4"
});

خروجی دستور به شکل زیر نمایش داده خواهد شد:

{ "acknowledged" : true, "insertedId" : 1 }

در مثال زیر ما یک سند document جدید دیگری به کالکشن collection به نام books اضافه و اینسرت می‌کنیم:

db.books.insertOne({
   _id: 1,
   title: "MongoDB for JS Developers",
   isbn: "0-4925-3790-9"
});

در صورتی که مقدار id_ : 1 را همان مقدار که در کالکشن collection در پایگاه داده MongoDB قرار دارد قرار دهیم (فیلد id_ تکراری است)

زمانی که مقدار فیلد id_ برابر 1 است و این مقدار در کالکشن collection به نام books وجود دارد بنابراین اجرای دستور خطای زیر را می‌دهد:

WriteError({
        "index" : 0,
        "code" : 11000,
        "errmsg" : "E11000 duplicate key error collection: bookstore.books index: _id_ dup key: { _id: 1.0 }",
        "op" : {
                "_id" : 1,
                "title" : "MongoDB for JS Developers",
                "isbn" : "0-4925-3790-9"
        }
})

خلاصه:

  • با استفاده از متد db.collection.insertOne() می‌توانید یک سند document به کالکشن collection اضافه و یا اینسرت کنید.
  • در یک کالکشن collection مقدار فیلد id_ بایستی منحصر به‌ فرد unique باشد (در هر سند document) اگر در زمان اینسرت سند document مقدار فیلد id_ تکراری باشد و در کالکشن collection وجود داشته باشد به شما خطا خواهد داد و سند جدید اینسرت نخواهد شد و خطای duplicate key error را نمایش می‌دهد.

برای ادامه آموزش مانگو دی‌ بی MongoDB می توانید مقاله آشنایی با دستور InsertMany در مانگو دی‌ بی را مطالعه کنید.

محسن زمانی هستم، برنامه نویس و طراح وب ، سئو هم بلدم . به هدف تفریح و سرگرمی این وب سایت رو طراحی کردم تا مطالبی که دوست دارم رو اینجا به اشتراک بزارم.

دیدگاه خود را بنویسید:

آدرس ایمیل شما نمایش داده نخواهد شد.