প্রোজেকশন (Projection) ব্যবহার করে ফিল্ড ফিল্টার করা
find() মেথডের দ্বিতীয় আর্গুমেন্ট হিসেবে প্রোজেকশন অবজেক্ট দিয়ে নির্দিষ্ট ফিল্ড রিটার্ন করা বা বাদ দেওয়া যায়।
সিনট্যাক্স
- Case 1 (Include):
db.collection.find({}, { "fieldName": 1 })— শুধু ওই ফিল্ড রিটার্ন করবে (সহজে _idও থাকে)। - Case 2 (Exclude):
db.collection.find({}, { "fieldName": 0 })— ওই ফিল্ড বাদ দিয়ে বাকিগুলো রিটার্ন করবে।
উদাহরণ
> db.returnFieldInFindDemo.insertOne({"StudentName":"John","StudentAge":23,"TechnicalSubject":["MongoDB","MySQL"]});
> db.returnFieldInFindDemo.insertOne({"StudentName":"Mike","StudentAge":24,"TechnicalSubject":["Java","Python"]});
> db.returnFieldInFindDemo.insertOne({"StudentName":"Sam","StudentAge":22,"TechnicalSubject":["C","C++"]});
> db.returnFieldInFindDemo.insertOne({"StudentName":"Carol","StudentAge":20,"TechnicalSubject":["DataStructure","Algorithm"]});
Case 1: শুধু TechnicalSubject ফিল্ড দেখানো
> db.returnFieldInFindDemo.find({}, { "TechnicalSubject": 1 }).pretty();
আউটপুট: শুধু _id এবং TechnicalSubject ফিল্ড দেখাবে।
Case 2: TechnicalSubject বাদ দিয়ে বাকি সব দেখানো
> db.returnFieldInFindDemo.find({}, { "TechnicalSubject": 0 }).pretty();
{
"_id" : ObjectId("5c8ebfe72f684a30fbdfd566"),
"StudentName" : "John", "StudentAge" : 23
}
{
"_id" : ObjectId("5c8ebffd2f684a30fbdfd567"),
"StudentName" : "Mike", "StudentAge" : 24
}
{
"_id" : ObjectId("5c8ec00f2f684a30fbdfd568"),
"StudentName" : "Sam", "StudentAge" : 22
}
{
"_id" : ObjectId("5c8ec0292f684a30fbdfd569"),
"StudentName" : "Carol", "StudentAge" : 20
}
Case 3: প্রোজেকশন ছাড়া (সব ফিল্ড)
> db.returnFieldInFindDemo.find();
টিপস: _id: 0 লিখলে _id ফিল্ডও বাদ দেওয়া যায়। একই কোয়েরিতে Include এবং Exclude মিক্স করা যায় না (শুধু _id বাদ দেওয়াócz)।