মঙ্গোডিবি: ক্ষেত্রটি শূন্য বা সেট না করা রেকর্ডগুলির জন্য কীভাবে জিজ্ঞাসা করবেন?


106

আমার একটি Emailডকুমেন্ট আছে যার একটি sent_atতারিখের ক্ষেত্র রয়েছে:

{
  'sent_at': Date( 1336776254000 )
}

এটি যদি Emailনা পাঠানো sent_atহয় তবে ক্ষেত্রটি শূন্য হয়, বা অ-অস্তিত্বশীল।

আমার কাছে প্রেরিত / না পাঠানো সমস্তের গণনা করা দরকার Emails। আমি এই তথ্যের জন্য ক্যোয়ারী সঠিক উপায় বের করার চেষ্টা করতে আটকে আছি। আমি মনে করি প্রেরিত গণনা পাওয়ার এটিই সঠিক উপায়:

db.emails.count({sent_at: {$ne: null}})

তবে যে পাঠানো হয়নি তার গণনা আমি কীভাবে করব?

উত্তর:



16

যদি আপনি কেবলমাত্র sent_atএকটি মান দিয়ে সংজ্ঞায়িত দলিলগুলি গণনা করতে চান null( sent_atসেট না করে নথিগুলি গণনা করবেন না ):

db.emails.count({sent_at: { $type: 10 }})

ধন্যবাদ. ক্ষেত্রের উপস্থিতি আছে কিনা তা পরীক্ষা করার সময় নালায় সেট করা এটি খুব দরকারী।
— jstice4 সমস্ত

আপভোটেড কারণ findপ্লেইন দিয়ে ব্যবহার করার সময় nullএটি 0.0যেমন মূল্যবোধগুলির ব্যাখ্যা করে nullএবং এই সমাধান এটি এড়ায়
— ম্যাথিয়াস হার্ম্যান

12

ব্যবহার করুন:

db.emails.count({sent_at: null})

যাঁদের প্রেরিত_আর সম্পত্তি বাতিল বা সেট না করা সমস্ত ইমেল গণনা করে। উপরের প্রশ্নটি নীচের মতই same

db.emails.count($or: [
  {sent_at: {$exists: false}},
  {sent_at: null}
])


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.