การค้นหาเอกสารหลายรายการพร้อมกันโดยระบุ _id ใช้โอเปอเรเตอร์ $in พร้อมอาร์เรย์ของ ObjectId
> db.demo528.insertOne({"Name": "Chris", Age: 21});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8b00d2ef4dcbee04fbbbe0") }
> db.demo528.insertOne({"Name": "Bob", Age: 22});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8b00d9ef4dcbee04fbbbe1") }
> db.demo528.insertOne({"Name": "David", Age: 20});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8b00e0ef4dcbee04fbbbe2") }
แสดงข้อมูล:
> db.demo528.find();
{ "_id" : ObjectId("5e8b00d2ef4dcbee04fbbbe0"), "Name" : "Chris", "Age" : 21 }
{ "_id" : ObjectId("5e8b00d9ef4dcbee04fbbbe1"), "Name" : "Bob", "Age" : 22 }
{ "_id" : ObjectId("5e8b00e0ef4dcbee04fbbbe2"), "Name" : "David", "Age" : 20 }
คิวรีค้นหา _id 2 ค่า พร้อมกัน
> db.demo528.find({
... _id: {$in: [ObjectId("5e8b00d2ef4dcbee04fbbbe0"), ObjectId("5e8b00e0ef4dcbee04fbbbe2")]}
... });
ผลลัพธ์ - ได้ Chris และ David:
การใช้งานในโปรแกรม (Application Code)
ในภาษาโปรแกรมมักจะมีอาร์เรย์ของ ID strings ต้องแปลงเป็น ObjectId ก่อน:
// JavaScript/Node.js const ids = ["5e8b00d2ef4dcbee04fbbbe0", "5e8b00e0ef4dcbee04fbbbe2"] .map(id => ObjectId(id)); db.collection.find({_id: {$in: ids}});ประโยชน์: ดึงหลายเอกสารใน 1 round-trip เร็วกว่าวนลูป findById หลายครั้ง