ใช่ $in เร็วกว่าการ query หลายครั้ง (multiple single searches) เพราะทำใน 1 round-trip และใช้ดัชนีได้อย่างมีประสิทธิภาพ
> db.demo653.insertOne({subject: "MySQL"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea04b274deddd72997713c0") }
> db.demo653.insertOne({subject: "MongoDB"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea04b304deddd72997713c1") }
> db.demo653.insertOne({subject: "Java"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea04b354deddd72997713c2") }
> db.demo653.insertOne({subject: "C"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea04b384deddd72997713c3") }
> db.demo653.insertOne({subject: "C++"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea04b3b4deddd72997713c4") }
แสดงข้อมูล:
> db.demo653.find();
คิวรี $in ค้นหา 3 วิชาพร้อมกัน
> db.demo653.find({subject: {$in: ["MySQL", "C++", "C"]}});ผลลัพธ์:
ทำไม $in เร็วกว่า?
| วิธี | Round Trips | Index Usage | Network Overhead |
|---|---|---|---|
| Multiple find() | N ครั้ง | ใช้ index ทุกครั้ง | สูง (N requests) |
| Single $in | 1 ครั้ง | ใช้ index 1 ครั้ง (OR scan) | ต่ำ (1 request) |