Skip to content

Commit

Permalink
Create article about "db.collection.insertOne()" (#22)
Browse files Browse the repository at this point in the history
* Create article about "db.collection.insertOne()"
  • Loading branch information
jame3032002 authored Oct 21, 2023
1 parent 1392dc7 commit 521478a
Showing 1 changed file with 103 additions and 0 deletions.
103 changes: 103 additions & 0 deletions src/content/docs/guides/insert-one.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
---
title: db.collection.insertOne()
description: การใช้งาน db.collection.insertOne()
---

คำสั่ง `db.collection.insertOne()` เป็นคำสั่งสำหรับ เพิ่มข้อมูลเข้าไปใน collection เพียง 1 record

## ข้อมูลที่ Return

เมื่อใช้คำสั่งนี้จะข้อมูลที่ Return มาจะมี
- `acknowledged` มีค่าเป็น Boolean
- `insertedId` ซึ่งจะมีค่า `_id` ของข้อมูลที่เราเพิ่มเข้าไป

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

| Parameter | ชนิดข้อมูล | คำอธิบาย |
| -------------- | ----------- | --------------------- |
| document | document | ข้อมูลที่ต้องการเพิ่มเข้าไป |
| writeConcern | document | ไม่จำเป็น (Optional) - สามารถดูการตั้งค่า[เพิ่มเติมในนี้ได้ครับ](https://www.mongodb.com/docs/manual/reference/write-concern/) |

> collection จะถูกสร้างมาให้โดยอัตโนมัติ ถ้าหากเราใช้คำสั่งนี้โดยที่ยังไม่ได้สร้าง collection
## Example

เพื่อความเข้าใจเรามาดูการใช้งานกันดีกว่าครับ

### เพิ่มข้อมูลโดยที่ไม่ได้ระบุ _id

```
db.users.insertOne({
"name": "Person name 1",
"position": "Developer",
"age": 25,
"education": [
{ 2021: "Diploma" },
{ 2022: "Bachelor" }
],
"createdby": ISODate("2023-01-01")
});
```

จะได้ response กลับมา

```
{
"acknowledged" : true,
"insertedId" : ObjectId("6531dc55156e498421faa729")
}
```

> เนื่องจากเราไม่ได้ระบุ `_id` ทำให้ mongod สร้าง `_id` ให้อัตโนมัติซึ่งจะเป็นค่า `ObjectId()` ที่มีค่าไม่ซ้ำกับตัวอื่นขึ้นมาครับ ถ้าหากคุณผู้อ่านได้ `_id` ไม่ตรงกับตัวอย่างในนี้ก็ไม่ต้องตกใจนะครับ เพราะระบบจะสร้างให้มาแบบไม่ซ้ำ
### เพิ่มข้อมูลโดยระบุ _id

```
db.users.insertOne({
"_id": ObjectId("56fc40f9d735c28df206d078"),
"name": "Person name 2",
"position": "Developer",
"age": 26,
"education": [
{ 2021: "Vocational school" },
{ 2022: "Bachelor" }
],
"createdby": ISODate("2023-02-01")
});
```

จะได้ response กลับมา

```
{ "acknowledged" : true, "insertedId" : ObjectId("56fc40f9d735c28df206d078") }
```

ถ้าหากลองเพิ่มข้อมูลอีกครั้งโดยที่ใส่ `_id` ซ้ำกับที่มีอยู่ เช่น

```
db.users.insertOne({
"_id": ObjectId("56fc40f9d735c28df206d078"),
"name": "Person name 3",
"position": "Senior Developer",
"age": 30,
"education": [
{ 2021: "Bachelor" },
{ 2022: "Master" }
],
"createdby": ISODate("2023-02-03")
});
```

จะแสดง error กลับมาดังนี้ครับ

```
MongoServerError: E11000 duplicate key error collection: example.users index: _id_ dup key: { _id: ObjectId('56fc40f9d735c28df206d078') }
```

0 comments on commit 521478a

Please sign in to comment.