খালি স্ট্রিং ফিল্ড চেক: $exists + $eq
MongoDB-এ একটি ফিল্ড আছে কিন্তু এর মান খালি স্ট্রিং ("") কিনা চেক করতে $exists: true এবং $eq: "" কম্বাইন করা হয়।
নমুনা ডেটা তৈরি
> db.demo485.insertOne({ "FirstName": "Chris", "LastName": "" })
> db.demo485.insertOne({ "FirstName": "David", "LastName": "Miller" })
> db.demo485.insertOne({ "FirstName": "Chris", "LastName": "Brown" })
> db.demo485.insertOne({ "FirstName": "Robert", "LastName": "" })
সমস্ত ডকুমেন্ট দেখানো
> db.demo485.find()
আউটপুট:
{ "_id": ObjectId("..."), "FirstName": "Chris", "LastName": "" }
{ "_id": ObjectId("..."), "FirstName": "David", "LastName": "Miller" }
{ "_id": ObjectId("..."), "FirstName": "Chris", "LastName": "Brown" }
{ "_id": ObjectId("..."), "FirstName": "Robert", "LastName": "" }
খালি LastName ফিল্টার
> db.demo485.find({ "LastName": { "$exists": true, "$eq": "" } })
ফলাফল:
{ "_id": ObjectId("..."), "FirstName": "Chris", "LastName": "" }
{ "_id": ObjectId("..."), "FirstName": "Robert", "LastName": "" }
ব্যাখ্যা
$exists: true: ফিল্ডটি ডকুমেন্টে উপস্থিত (নালও হলে true)$eq: "": ফিল্ডের মান খালি স্ট্রিং কিনা চেক করে- দুইটোই একসাথে দিয়ে "ফিল্ড আছে এবং মান খালি" নিশ্চিত করা হয়
- নাল ও খালি স্ট্রিং আলাদা:
{ LastName: null }vs{ LastName: "" } - সরলীকৃত:
{ LastName: "" }লিখলেই হয় (ইমপ্লিসিট $eq), কিন্তু$existsযোগ করলে স্পষ্ট হয় ফিল্ড আছে
অন্যান্য খালি চেক
- নাল চেক:
{ LastName: null }(ফিল্ড না থাকলেও মэтচ করে!) - ফিল্ড অনুপস্থিত:
{ LastName: { $exists: false } } - খালি অ্যারে:
{ tags: { $size: 0 } } - খালি অবজেক্ট:
{ info: {} }বা{ $where: "Object.keys(this.info).length === 0" }
ডেটা ভ্যালিডেশন এবং ক্লিনআপ কোয়েরির জন্য খুব ব্যবহারিক।