MongoDB รองรับการเก็บอาร์เรย์เป็นค่าของฟิลด์ได้โดยตรง ไม่ต้องมีการแปลงเปลี่ยนพิเศษ ให้สร้างคอลเลกชันตัวอย่างที่เก็บอาร์เรย์ของออบเจ็กต์:
> db.demo321.insertOne({"UserDetails":[{"UserId":101,"UserName":"Chris"},{"UserId":102,"UserName":"Mike"}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e511248f8647eb59e56206a") }
> db.demo321.insertOne({"UserDetails":[{"UserId":103,"UserName":"Bob"},{"UserId":104,"UserName":"Sam"}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e511259f8647eb59e56206b") }
แสดงข้อมูลทั้งหมด:
> db.demo321.find();
ผลลัพธ์:
{ "_id" : ObjectId("5e511248f8647eb59e56206a"), "UserDetails" : [ { "UserId" : 101, "UserName" : "Chris" }, { "UserId" : 102, "UserName" : "Mike" } ] }
{ "_id" : ObjectId("5e511259f8647eb59e56206b"), "UserDetails" : [ { "UserId" : 103, "UserName" : "Bob" }, { "UserId" : 104, "UserName" : "Sam" } ] }
จุดสำคัญ
- MongoDB เป็น document database ที่รองรับ nested arrays และ objects โดยธรรมชาติ
- อาร์เรย์สามารถเก็บค่าได้หลายประเภท: string, number, object, boolean, null, อาร์เรย์ซ้อนกัน
- ไม่จำเป็นต้องกำหนด schema ล่วงหน้า (schema-less)
- สามารถ query เข้าไปในอาร์เรย์ได้ด้วย dot notation หรือ $elemMatch