হ্যাঁ, MongoDB-এ $in একাধিক সিঙ্গল find() কোয়ারির চেয়ে দ্রুত। একটি কালেকশন তৈরি করুন:
> 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") }
find() দিয়ে ডকুমেন্ট দেখান:
> db.demo653.find();
আউটপুট:
$inব্যবহার করে "MySQL", "C++", "C" একসাথে সার্চ করুন:> db.demo653.find({subject:{$in:["MySQL","C++","C"]}});আউটপুট:
ব্যাখ্যা:
$inএকসাথে একাধিক মান চেক করে, ডাটাবেস ইঞ্জিন একবার ইন্ডেক্স ট্রাভার্স করে সব মান খুঁজে বের করে। আলাদা আলাদাfind()কল করলে নেটওয়ার্ক রাউন্ডট্রিপ এবং কোয়ারি প্ল্যানিং ওভারহেড বেড়ে যায়। বড় ইন অ্যারে (1000+) পারফরম্যান্স কমাতে পারে, সেক্ষেত্রে অল্টারনেটিভ বিবেচনা করুন।