Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

MongoDB: จำกัดฟิลด์ที่แสดงในผลลัพธ์ (Projection)

ใช้ projection ใน find() โดยระบุฟิลด์ที่ต้องการ (1) หรือไม่ต้องการ (0) เพื่อจำกัดข้อมูลที่ส่งกลับ สร้างคอลเลกชันตัวอย่าง:

> db.demo330.insertOne({"Id":101,"Name":"Chris","Age":21});
{ "acknowledged" : true, "insertedId" : ObjectId("5e52149ff8647eb59e562081") }
> db.demo330.insertOne({"Id":102,"Name":"Sam","Age":24});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5214aaf8647eb59e562082") }
> db.demo330.insertOne({"Id":103,"Name":"David","Age":28});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5214b3f8647eb59e562083") }
> db.demo330.insertOne({"Id":104,"Name":"Bob","Age":23});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5214bdf8647eb59e562084") }

แสดงข้อมูลทั้งหมด:

> db.demo330.find();

แสดงเฉพาะฟิลด์ Name (ตั้งค่าเป็น 1):

> db.demo330.find({},{Name:1});

ผลลัพธ์ (มีเฉพาะ _id และ Name):

{ "_id" : ObjectId("5e52149ff8647eb59e562081"), "Name" : "Chris" }
{ "_id" : ObjectId("5e5214aaf8647eb59e562082"), "Name" : "Sam" }
{ "_id" : ObjectId("5e5214b3f8647eb59e562083"), "Name" : "David" }
{ "_id" : ObjectId("5e5214bdf8647eb59e562084"), "Name" : "Bob" }

กฎของ Projection

  • 1 = include (รวม), 0 = exclude (ตัดออก)
  • ไม่สามารถผสม include และ exclude ได้ในคิวรีเดียว (ยกเว้น _id)
  • _id ถูก include โดยอัตโนมัติ ต้องระบุ {_id: 0} เพื่อซ่อน
  • สำหรับ nested field: {"details.Name": 1}
  • ช่วยลด network traffic และ memory usage อย่างมาก