মঙ্গুজে, আমি কীভাবে তারিখ অনুসারে বাছাই করব? (Node.js)


160

আসুন আমরা মঙ্গুজে এই ক্যোয়ারী চালাচ্ছি:

Room.find({}, function(err,docs){

}).sort({date:-1}); 

এটি কাজ করে না!

উত্তর:


429

বাছাই নকুল মধ্যে রিলিজ যেমন এই উত্তরগুলোর কিছু আর কার্যকর নয় সেগুলি উপর যে বিকশিত করেনি। এর মতো 4.1.x নকুল মুক্তির, একটি সাজানো সাজানোর dateক্ষেত্র নিম্নলিখিত উপায়ে কোনো কাজ করা যেতে পারে:

Room.find({}).sort('-date').exec(function(err, docs) { ... });
Room.find({}).sort({date: -1}).exec(function(err, docs) { ... });
Room.find({}).sort({date: 'desc'}).exec(function(err, docs) { ... });
Room.find({}).sort({date: 'descending'}).exec(function(err, docs) { ... });
Room.find({}).sort([['date', -1]]).exec(function(err, docs) { ... });
Room.find({}, null, {sort: '-date'}, function(err, docs) { ... });
Room.find({}, null, {sort: {date: -1}}, function(err, docs) { ... });

একটি আরোহী সাজানোর জন্য, বাদ -এর স্ট্রিং সংস্করণ বা ব্যবহারের মান উপর উপসর্গ 1, ascঅথবা ascending


1
এটি করা যায় এমন বিভিন্ন উপায়ে দেখানোর জন্য +1। যাইহোক, ক্যোরি # সন্ধান করে যে দস্তাবেজগুলিতে আমি এটির অনেকগুলি আর্গুমেন্ট গ্রহণ করব তা খুঁজে পাচ্ছি না । স্বাক্ষরটি হ'ল Query#find([criteria], [callback])। আমি ভেবেছিলাম সম্ভবত কোনও গোপন হ্যান্ডশেক ছিল যা বলে যে "মানদণ্ড" তিনটি যুক্তি পর্যন্ত হতে পারে, তবে এটি "অবজেক্ট" হিসাবে ধরণের তালিকাবদ্ধ করে।
নাটোয়ামি

@ নাটোওমি আপনি ডক্সে ভুল findপদ্ধতিটি দেখছেন । দেখুন Model.find
জননিএইচকে

1
তুমি ঠিক বলছো. আমি দেখেছি তারা Module#propertyস্বরলিপিটি ব্যবহার করছে এবং অনুসন্ধান করেছে #find। মনে হচ্ছে দস্তাবেজগুলি নেভিগেট করার বা অনুসন্ধান করার কোনও সহজ উপায় নেই। 187 ফলাফল ফলন সন্ধানে।
নাটোয়ামি

2
আপনি _idক্ষেত্র অনুসারে বাছাই করতে পারেন । উদাহরণস্বরূপ, সর্বাধিক সাম্প্রতিক রেকর্ড পেতে, আপনি এটি করতে পারেন:await db.collection.findOne().sort({ _id: -1 });
মাইক কে

53

সঠিক উত্তরটি হ'ল:

Blah.find({}).sort({date: -1}).execFind(function(err,docs){

});

13
সাজানোর ( '- এই তারিখে'): উপরে উদাহরণস্বরূপ আপডেট সাজানোর সিনট্যাক্স হল mongoosejs.com/docs/api.html#query_Query-sort
emilebaizel

3
এই আমার জন্য কাজ করে না। আমি একটি ত্রুটি পাচ্ছি "User.find (...) সাজানোর (...) execFind একটি ফাংশন নয়।।"
সন্দীপ Subedi

12

মোঙ্গুজ ৩.৫ (.2) ব্যবহার করে আজ এই সমস্যাটির সাথে মোকাবিলা করা হয়েছে এবং উত্তরের কোনও উত্তরই আমাকে এই সমস্যা সমাধান করতে যথেষ্ট সহায়তা করে না। নিম্নলিখিত কোড স্নিপেট কৌশলটি করে

Post.find().sort('-posted').find(function (err, posts) {
    // user posts array
});

আপনি যে কোনও স্ট্যান্ডার্ড প্যারামিটারগুলি পাঠাতে পারেন find()(যেমন ক্লজ এবং রিটার্ন ফিল্ডগুলি) তবে কোনও কলব্যাক নেই। কলব্যাক ব্যতীত এটি একটি ক্যোয়ারী অবজেক্ট দেয় যা আপনি চেইন sort()করেন। আপনাকে find()আবার কল করতে হবে (বেশি পরামিতি সহ বা ছাড়াই - দক্ষতার কারণে কোনও প্রয়োজন নেই) যা আপনাকে আপনার কলব্যাকে ফলাফল সেট করার অনুমতি দেবে।


4

আমি এই কাজ:

Data.find( { $query: { user: req.user }, $orderby: { dateAdded: -1 } } function ( results ) {
    ...
})

এটি প্রথমে সবচেয়ে সাম্প্রতিক জিনিসগুলি দেখায়।


1
$orderbyমঙ্গোবিবি ৩.২ এ অবমূল্যায়ন করা হয়েছে তাই এটি আর ব্যবহার করা উচিত নয়।
জনিএইচকে

4
Post.find().sort({date:-1}, function(err, posts){
});

পাশাপাশি কাজ করা উচিত

সম্পাদনা করুন:

আপনি যদি ত্রুটিটি পান তবে এটি ব্যবহারের চেষ্টা করতে পারেন sort() only takes 1 Argument:

Post.find({}, {
    '_id': 0,    // select keys to return here
}, {sort: '-date'}, function(err, posts) {
    // use it here
});

1
এটি আমাকে ত্রুটি দেয়:Error: sort() only takes 1 Argument
ম্রিড

@ লুকাক্সএফ দয়া করে আপডেট হওয়া উত্তরটি দেখুন। আমি আশা করি এটি আপনাকে সহায়তা করবে :)
ম্রিড

@ মিরিডটি এটির মতো হওয়া উচিত: Post.find({}, {'_id': 0}).sort("-date").function(err, posts){});
মোস্তফা গাদিমি ২ '

2

সংক্ষিপ্ত সমাধান:

const query = {}
const projection = {}
const options = { sort: { id: 1 }, limit: 2, skip: 10 }

Room.find(query, projection, options).exec(function(err, docs) { ... });

1

যে 1 ম পদ্ধতিটি কাজ করে না। এটি কেবল স্তব্ধ হয়ে গেছে ... আমি মনে করি এটি মঙ্গুজের আপডেটের কারণে .... এবং ২ য় পদ্ধতিটি কেবল মঙ্গো ডক্স, যা সম্পর্কে আমি জানি know
টিমেক্স

সন্ধান () ফাংশনটি মঙ্গোডিবির কাজ, মঙ্গুজ নয় oose আরও তথ্যের জন্য দয়া করে মঙ্গুজ এপিআই পৃষ্ঠাটি পড়ুন আপনি মঙ্গুজের সাথে মঙ্গোডিবি ডক্সে সংজ্ঞায়িত বাক্য গঠন ব্যবহার করতে পারেন। এ কারণেই মঙ্গুজের নিজস্ব বাছাই বা ছেদ করার প্রশ্নগুলি নেই।
neebz

0

আপনি _idক্ষেত্র অনুসারে বাছাই করতে পারেন । উদাহরণস্বরূপ, সর্বাধিক সাম্প্রতিক রেকর্ড পেতে, আপনি এটি করতে পারেন,

const mostRecentRecord = await db.collection.findOne().sort({ _id: -1 });

এটিও অনেক তাড়াতাড়ি, কারণ আপনার dateক্ষেত্রটি সূচিযুক্ত নয় এমন বাজি রাখতে আমি আরও বেশি আগ্রহী ।

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