MongoDB-এ কোনো ফিল্ড খালি অ্যারে ([]) নাকি খালি অবজেক্ট ({}) কিনা চেক করতে কোয়েরি অপারেটর কম্বাইন করা হয়।
চেক করার লজিক
{$gt: {}}— ফিল্ডটি খালি অবজেক্ট নয় (অবজেক্ট হলে কমপক্ষে একটি কি থাকবে){$exists: false}index0নেই — অর্থাৎ অ্যারে নয় (অথবা খালি অ্যারে)
দুটো মিলিয়ে: ফিল্ড অবজেক্ট হলে $gt: {} ট্রু, আর অ্যারে হলে 0 ইনডেক্স থাকে। তাই 0 ইনডেক্স না থাকা + অবজেক্ট বড় হলে = খালি অবজেক্ট নয় এবং অ্যারে নয় = সাধারণ অবজেক্ট।
নমুনা ডেটা তৈরি (বিভিন্ন টাইপ)
> db.checkFieldDemo.insert([
{ _id: 1010, StudentDetails: {} },
{ _id: 1011, StudentDetails: [ { StudentId: 1 } ] },
{ _id: 1012, StudentDetails: [ {} ] },
{ _id: 1013 },
{ _id: 1014, StudentDetails: null },
{ _id: 1015, StudentDetails: { StudentId: 1 } }
]);
BulkWriteResult({ "nInserted": 6, ... })
সব ডকুমেন্ট দেখুন
> db.checkFieldDemo.find().pretty();আউটপুট:
{ "_id": 1010, "StudentDetails": { } }
{ "_id": 1011, "StudentDetails": [ { "StudentId": 1 } ] }
{ "_id": 1012, "StudentDetails": [ { } ] }
{ "_id": 1013 }
{ "_id": 1014, "StudentDetails": null }
{ "_id": 1015, "StudentDetails": { "StudentId": 1 } }
কোয়েরি: StudentDetails ফিল্ডটি খালি অবজেক্ট {} নয় এবং অ্যারে [] নয় (অর্থাৎ একটি নন-এমপটি অবজেক্ট)
> db.checkFieldDemo.find({
"StudentDetails": { "$gt": {} },
"StudentDetails.0": { "$exists": false }
});
আউটপুট (শুধু 1015 নম্বর):
{
"_id": 1015,
"StudentDetails": { "StudentId": 1 }
}
ব্যাখ্যা:
- 1010: {} —
$gt: {}ফেল (খালি অবজেক্ট) - 1011: অ্যারে —
0ইনডেক্স একজিস্ট করে, তাই$exists: falseফেল - 1012: [{}] — অ্যারে, 0 ইনডেক্স আছে
- 1013: ফিল্ড নেই
- 1014: null —
$gt: {}ফেল - 1015: {StudentId:1} — উভয় শর্ত পূরণ করে