MongoDB / insertOne ба insertMany

insertOne ба insertMany

Collection-д document нэмэхийн тулд insertOne() эсвэл insertMany() ашиглана. Энэ хоёр нь MongoDB-д өгөгдөл оруулах үндсэн арга юм.

insertOne — нэг document нэмэх

javascript
db.collection.insertOne(document);

Энгийн жишээ

javascript
use school

db.students.insertOne({
  name: "Болд Батаа",
  age: 22,
  city: "Улаанбаатар",
  enrolled: true
})

Гаралт:

javascript
{
  acknowledged: true,
  insertedId: ObjectId('64abc1234567890abcdef012')
}
  • acknowledged: true — MongoDB амжилттай хүлээн авсан
  • insertedId — автоматаар үүсгэсэн _id утга

Nested document оруулах

javascript
db.students.insertOne({
  name: "Нараа Сүрэн",
  age: 20,
  address: {
    city: "Улаанбаатар",
    district: "Хан-Уул",
  },
  courses: ["MongoDB", "JavaScript", "React"],
  scores: {
    math: 95,
    programming: 88,
  },
});

Өөрийн _id тодорхойлох

javascript
db.students.insertOne({
  _id: "student-001",
  name: "Дорж Мөнх",
  age: 23,
});

Анхаарна уу: Давхардсан _id оруулбал MongoServerError: E11000 duplicate key error гарна.


insertMany — олон document нэмэх

javascript
db.collection.insertMany([document1, document2, ...])

Жишээ

javascript
db.students.insertMany([
  {
    name: "Анхаа Дорж",
    age: 21,
    city: "Улаанбаатар",
    gpa: 3.8,
  },
  {
    name: "Батзориг",
    age: 24,
    city: "Дархан",
    gpa: 3.5,
  },
  {
    name: "Цэцэгмаа",
    age: 22,
    city: "Эрдэнэт",
    gpa: 3.9,
    scholarship: true,
  },
]);

Гаралт:

javascript
{
  acknowledged: true,
  insertedCount: 3,
  insertedIds: {
    '0': ObjectId('64abc0000000000000000001'),
    '1': ObjectId('64abc0000000000000000002'),
    '2': ObjectId('64abc0000000000000000003')
  }
}
  • insertedCount: 3 — 3 document нэмэгдсэн
  • insertedIds — бүх шинэ _id-нүүд, index-ээр дугаарлагдсан

Ordered vs Unordered insertMany

insertMany-д алдаатай document байвал яах вэ? Энэ нь ordered сонголтоос хамаарна.

Ordered (default) — дарааллаар

javascript
db.students.insertMany(
  [
    { _id: 1, name: "Болд" },
    { _id: 2, name: "Дорж" },
    { _id: 2, name: "Нараа" }, // _id давхардсан — алдаа!
    { _id: 3, name: "Анхаа" }, // Энд хүрэхгүй
  ],
  { ordered: true }, // default утга
);

Гаралт: 1, 2-р document нэмэгдэнэ. 3-р document алдаа өгөхөд зогсоно — 4-р document нэмэгдэхгүй.

Unordered — алдааг алгасаж үргэлжлүүлэх

javascript
db.students.insertMany(
  [
    { _id: 1, name: "Болд" },
    { _id: 2, name: "Дорж" },
    { _id: 2, name: "Нараа" }, // алдаа — алгасана
    { _id: 3, name: "Анхаа" }, // нэмэгдэнэ
  ],
  { ordered: false },
);

Гаралт: 1, 2, 3-р document нэмэгдэнэ. 3-р document алдаа өгч алгасагдана — 4-р document нэмэгдэнэ.

| | Ordered (default) | Unordered | | ------------------ | ----------------- | ------------------------- | | Алдаа гарвал | Зогсоно | Алгасаж үргэлжилнэ | | Хурд | Удаан | Хурдан | | Хэрэглэх тохиолдол | Дараалал чухал | Том багц, алдаа зөвшөөрнө |


insertedId авах

Кодоос insertOne-ийн буцаасан ID-г ашиглаж болно:

javascript
const result = db.students.insertOne({
  name: "Мөнхбаяр",
  age: 25,
});

// Шинэ document-ийн ID
console.log(result.insertedId);
// Гаралт: ObjectId('64abc1234567890abcdef099')

// Тэр ID-г ашиглан шууд унших
db.students.findOne({ _id: result.insertedId });

Огноо оруулах

javascript
db.events.insertOne({
  title: "MongoDB хичээл",
  date: new Date(), // одоогийн цаг
  startDate: new Date("2025-01-15"), // тодорхой огноо
  endDate: ISODate("2025-06-01T09:00:00"), // ISO формат
});

Бодит жишээ — курсын систем

javascript
use courses_db

// Хичээлүүд нэмэх
db.lessons.insertMany([
  {
    slug: "01-intro",
    title: "MongoDB гэж юу вэ?",
    order: 1,
    duration: 15,
    isPublished: true,
    createdAt: new Date()
  },
  {
    slug: "02-install",
    title: "MongoDB суулгах",
    order: 2,
    duration: 20,
    isPublished: true,
    createdAt: new Date()
  },
  {
    slug: "03-concepts",
    title: "Database, Collection, Document",
    order: 3,
    duration: 18,
    isPublished: false,
    createdAt: new Date()
  }
])

Нийтлэг алдаа

Давхардсан _id:

код
MongoServerError: E11000 duplicate key error collection: school.students index: _id_ dup key: { _id: 2 }

_id өвөрмөц байх ёстой. ObjectId автоматаар үүсгүүл.

Array биш өгсөн:

javascript
// Алдаатай — insertMany-д array шаардлагатай
db.students.insertMany({ name: "Болд" });

// Зөв
db.students.insertMany([{ name: "Болд" }]);

Дараагийн хичээлд:

find ба findOne ашиглан оруулсан document-уудаа хайж унших аргыг судална.