insertOne ба insertMany
Collection-д document нэмэхийн тулд insertOne() эсвэл insertMany() ашиглана. Энэ хоёр нь MongoDB-д өгөгдөл оруулах үндсэн арга юм.
insertOne — нэг document нэмэх
db.collection.insertOne(document);
Энгийн жишээ
use school
db.students.insertOne({
name: "Болд Батаа",
age: 22,
city: "Улаанбаатар",
enrolled: true
})
Гаралт:
{
acknowledged: true,
insertedId: ObjectId('64abc1234567890abcdef012')
}
acknowledged: true— MongoDB амжилттай хүлээн авсанinsertedId— автоматаар үүсгэсэн_idутга
Nested document оруулах
db.students.insertOne({
name: "Нараа Сүрэн",
age: 20,
address: {
city: "Улаанбаатар",
district: "Хан-Уул",
},
courses: ["MongoDB", "JavaScript", "React"],
scores: {
math: 95,
programming: 88,
},
});
Өөрийн _id тодорхойлох
db.students.insertOne({
_id: "student-001",
name: "Дорж Мөнх",
age: 23,
});
Анхаарна уу: Давхардсан
_idоруулбалMongoServerError: E11000 duplicate key errorгарна.
insertMany — олон document нэмэх
db.collection.insertMany([document1, document2, ...])
Жишээ
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,
},
]);
Гаралт:
{
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) — дарааллаар
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 — алдааг алгасаж үргэлжлүүлэх
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-г ашиглаж болно:
const result = db.students.insertOne({
name: "Мөнхбаяр",
age: 25,
});
// Шинэ document-ийн ID
console.log(result.insertedId);
// Гаралт: ObjectId('64abc1234567890abcdef099')
// Тэр ID-г ашиглан шууд унших
db.students.findOne({ _id: result.insertedId });
Огноо оруулах
db.events.insertOne({
title: "MongoDB хичээл",
date: new Date(), // одоогийн цаг
startDate: new Date("2025-01-15"), // тодорхой огноо
endDate: ISODate("2025-06-01T09:00:00"), // ISO формат
});
Бодит жишээ — курсын систем
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 биш өгсөн:
// Алдаатай — insertMany-д array шаардлагатай
db.students.insertMany({ name: "Болд" });
// Зөв
db.students.insertMany([{ name: "Болд" }]);
Дараагийн хичээлд:
find ба findOne ашиглан оруулсан document-уудаа хайж унших аргыг судална.