মংগোডিবি কোথায় _id এর অ্যারে নির্বাচন করবে?


93

এসকিউএলের মতো সংগ্রহের নথিগুলি নির্বাচন করতে মঙ্গো ডিবিতে সম্ভব:

SELECT * FROM collection WHERE _id IN (1,2,3,4);

বা আমার যদি একটি থাকে তবে _id arrayআমি অবশ্যই একে একে বেছে নেব এবং তারপরে array/objectফলাফলগুলি পুনরায় সংশোধন করব?

উত্তর:


167

সহজ :)

db.collection.find( { _id : { $in : [1,2,3,4] } } );

থেকে নেওয়া: http://www.mongodb.org/display/DOCS/Advanced++ Query#AdvancedQueries-%24in


আমরা কি এখনও ইনডেক্সিং এর সুবিধা পাব?
সেক্ষেত্রে

4
তুমি কর. তবে সময়ের জটিলতা লিনিয়ার (এন), লগারিদমিক / ধ্রুবক নয়। সূচী ব্যতীত এটি এন ^ 2 হবে।
পেট্রা ব্রজডিল

তাই না O(log(n) * m)যেখানে nসংগ্রহে আকার এবং mআইডি সংখ্যা প্রেরণ করা হয়?
গুগ

8
আপনাকে অবজেক্টআইড ফাংশনটি ব্যবহার করতে হবে, যদি "_id" আইডি অবজেক্ট হয় - {_id: {$ ইন: [অবজেক্টআইড ("5a633609670aeb6f93b88b23")]}}
প্যাকস বিচ

7

তালিকা আইডির একটি অ্যারে

এই কোড তালিকায় ব্যবহারকারী সংগ্রহে আইডির অ্যারে রয়েছে

var list = ["5883d387971bb840b7399130","5883d389971bb840b7399131","5883d38a971bb840b7399132"]

    .find({ _id: {$in : list}})

4
কোডটি কাজ করছে না। দেখে মনে হচ্ছে অবজেক্টআইড হিসাবে আইডি সেট করতে হবে ("5883d387971bb840b7399130")
প্যাকস বিচ

2

কারণ মোংডব ব্যবহার করে bsonএবং বিসনের জন্য গুরুত্বপূর্ণ বৈশিষ্ট্য প্রকার। এবং কারণ _idহল ObjectIdআপনি ভালো ব্যবহার করা আবশ্যক:

db.collection.find( { _id : { $in : [ObjectId('1'),ObjectId('2')] } } );

এবং এর mongodb compassমতো ব্যবহারে:

{ "_id" : { $in : [ObjectId('1'),ObjectId('2')] } }

দ্রষ্টব্য: স্ট্রিং ইন অবজেক্টআইডি এর 24দৈর্ঘ্য রয়েছে।


2

আপনি যদি শর্তাধীন যেমন ব্যবহারকারীর দ্বারা এবং অন্য কোনও ক্ষেত্রের সন্ধান করতে চান তবে আপনি সহজেই স্প্রেড এবং টেরিনারি অপারেটর ব্যবহার করে নীচের মতো এটি ব্যবহার করতে পারেন aggregateএবংmatch

 const p_id = patient_id;
    let fetchingReports = await Reports.aggregate([
      ...(p_id
        ? [
            {
              $match: {
                createdBy: mongoose.Types.ObjectId(id),
                patient_id: p_id,
              },
            },
          ]
        : [
            {
              $match: {
                createdBy: mongoose.Types.ObjectId(id),
              },
            },
        

-3

এটি মঙ্গো ক্যোয়ারির সাথে সম্পর্কিত নয়। আমি এসকিউএল এর সাথে পরিচিত ছিলাম এবং এসকিউএল ব্যবহার করে একটি মঙ্গো ডাটাবেস জিজ্ঞাসা করতে স্টুডিও 3 টি আইডিই ব্যবহার করি। আপনি যদি আমার মতো একজন হন তবে আমি এটি উল্লেখ করতে চাই যে আইডি মানটি টাইপকাস্ট করা দরকার। সুতরাং ক্যোয়ারীটি এমন দেখাচ্ছে:

SELECT _id from <collectionName>
WHERE _id = ObjectId("5883d387971bb840b7399130");

4
এটি প্রশ্নটি মোটেই সমাধান করে না।
লোকট্রিশ

উত্তর দেয় না, সম্মত হয়। এটি স্টুডিও 3 টি এর মতো কিছু আইডিইতে সহায়তা করতে পারে যা আপনাকে এসকিউএল ব্যবহার করে মঙ্গোডিবিতে ইন্টারেক্ট করতে দেয়। উত্তর উত্তর আছে। এছাড়াও, এটি হাইলাইট করা যায় যে এমনকি সেই ক্ষেত্রে _আইডিটি টাইপ করা যেতে হবে।
সৌরভএক্সেই

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