এসকিউএলের মতো সংগ্রহের নথিগুলি নির্বাচন করতে মঙ্গো ডিবিতে সম্ভব:
SELECT * FROM collection WHERE _id IN (1,2,3,4);
বা আমার যদি একটি থাকে তবে _id array
আমি অবশ্যই একে একে বেছে নেব এবং তারপরে array/object
ফলাফলগুলি পুনরায় সংশোধন করব?
উত্তর:
সহজ :)
db.collection.find( { _id : { $in : [1,2,3,4] } } );
থেকে নেওয়া: http://www.mongodb.org/display/DOCS/Advanced++ Query#AdvancedQueries-%24in
O(log(n) * m)
যেখানে n
সংগ্রহে আকার এবং m
আইডি সংখ্যা প্রেরণ করা হয়?
কারণ মোংডব ব্যবহার করে bson
এবং বিসনের জন্য গুরুত্বপূর্ণ বৈশিষ্ট্য প্রকার। এবং কারণ _id
হল ObjectId
আপনি ভালো ব্যবহার করা আবশ্যক:
db.collection.find( { _id : { $in : [ObjectId('1'),ObjectId('2')] } } );
এবং এর mongodb compass
মতো ব্যবহারে:
{ "_id" : { $in : [ObjectId('1'),ObjectId('2')] } }
দ্রষ্টব্য: স্ট্রিং ইন অবজেক্টআইডি এর 24
দৈর্ঘ্য রয়েছে।
আপনি যদি শর্তাধীন যেমন ব্যবহারকারীর দ্বারা এবং অন্য কোনও ক্ষেত্রের সন্ধান করতে চান তবে আপনি সহজেই স্প্রেড এবং টেরিনারি অপারেটর ব্যবহার করে নীচের মতো এটি ব্যবহার করতে পারেন 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 টি আইডিই ব্যবহার করি। আপনি যদি আমার মতো একজন হন তবে আমি এটি উল্লেখ করতে চাই যে আইডি মানটি টাইপকাস্ট করা দরকার। সুতরাং ক্যোয়ারীটি এমন দেখাচ্ছে:
SELECT _id from <collectionName>
WHERE _id = ObjectId("5883d387971bb840b7399130");