মংডোব-এ কীভাবে অবজেক্টের অ্যারে অনুসন্ধান করবেন


207

মনে করুন মংডোব ডকুমেন্ট (টেবিল) 'ব্যবহারকারী'

{
  _id: 1,
  name: { first: 'John', last: 'Backus' },
  birth: new Date('Dec 03, 1924'),
  death: new Date('Mar 17, 2007'),
  contribs: [ 'Fortran', 'ALGOL', 'Backus-Naur Form', 'FP' ],
  awards: [
            { award: 'National Medal',
              year: 1975,
              by: 'NSF' },
            { award: 'Turing Award',
              year: 1977,
              by: 'ACM' }
          ]
}
and other object(person)s

'জাতীয় পদক' পুরস্কার প্রাপ্ত ব্যক্তিকে আমি খুঁজতে চাই এবং ১৯ 197৫ সালে অবশ্যই তাকে পুরষ্কার দেওয়া উচিত, বিভিন্ন বছরে এই পুরষ্কার প্রাপ্ত ব্যক্তিরাও থাকতে পারেন।

পুরস্কারের ধরণ এবং বছর ব্যবহার করে আমি এই ব্যক্তিকে কীভাবে খুঁজে পাব। সুতরাং আমি সঠিক ব্যক্তি পেতে পারি।

উত্তর:


367

সঠিক উপায়:

db.users.find({awards: {$elemMatch: {award:'National Medal', year:1975}}})

$elemMatch আপনাকে একই অ্যারে উপাদানের মধ্যে একাধিক উপাদান মেলাতে দেয়।

$elemMatchমোঙ্গো ছাড়া কিছু বছর জাতীয় পদক এবং 1975 এর কিছু পুরষ্কার প্রাপ্ত ব্যবহারকারীদের সন্ধান করবে তবে 1975 সালে জাতীয় পদক প্রাপ্ত ব্যবহারকারীদের জন্য নয়।

দেখুন MongoDB $ elemMatch ডকুমেন্টেশন আরও তথ্যের জন্য। অ্যারে সহ নথি জিজ্ঞাসা করা সম্পর্কে আরও তথ্যের জন্য অপারেশন ডকুমেন্টেশন পড়ুন দেখুন ।


4
অর্থাত্ এলেম ম্যাচ পুরষ্কার 'এবং' বছর (পুরষ্কারের বিপরীতে 'বা' বছরের)
আদিত্য মিত্তাল

আমরা কীভাবে কেবল সেই দস্তাবেজগুলিকে কীভাবে জিজ্ঞাসা করব যা জন হিসাবে প্রথম নাম এবং সরল উপায়ে জাতীয় পদক হিসাবে পুরষ্কার পেয়েছে? আমরা পুরষ্কার অ্যারের মাধ্যমে সামগ্রিক এবং পুনরাবৃত্তি সহ এটি করি তবে সহজ জিজ্ঞাসা জানতে চেয়েছিলাম
ভেঙ্কটেশ কোল্লা - user2742897

23

নির্দিষ্ট অবজেক্টের অ্যারে খুঁজে পেতে $ elemMatch ব্যবহার করুন

db.users.findOne({"_id": id},{awards: {$elemMatch: {award:'Turing Award', year:1977}}})

0

এটি দুটি উপায়ে করতে পারেন:

  1. এলিমেন্ট ম্যাচ - $elemMatch(উপরের উত্তরে বর্ণিত হিসাবে)

    db.users.find (s পুরষ্কার: {$ elemMatch: {পুরষ্কার: 'টুরিং অ্যাওয়ার্ড', বছর: 1977}}})

  2. ব্যবহারের $andসঙ্গেfind

    db.get Colલેક્શન ('ব্যবহারকারী')। সন্ধান করুন (users "$ এবং": [{"পুরষ্কার .award": "টুরিং অ্যাওয়ার্ড"}, award "পুরষ্কার.ইয়ার": 1977}]})

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