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

ค้นหาเอกสาร MongoDB ตาม _id หลายค่า ด้วย $in

การค้นหาเอกสารหลายรายการพร้อมกันโดยระบุ _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 หลายครั้ง