মঙ্গুজে বাছাই কিভাবে?


154

আমি বাছাই করার পরিবর্তনের জন্য কোনও দস্তাবেজ পাই না। একমাত্র অন্তর্দৃষ্টি ইউনিট পরীক্ষাগুলিতে রয়েছে: spec.lib.query.js # L12

writer.limit(5).sort(['test', 1]).group('name')

তবে এটি আমার পক্ষে কার্যকর নয়:

Post.find().sort(['updatedAt', 1]);

উত্তর:


157

মঙ্গুজে, নিম্নোক্ত যে কোনও উপায়ে একটি বাছাই করা যায়:

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

5
এটি ফ্রান্সিসকো প্রেজেনসিয়ার লিঙ্ক করা উত্তরের প্রায় সরাসরি কপি। দুর্ভাগ্যক্রমে সর্বাধিক ভোট দেওয়া উত্তরগুলি পুরানো এবং অহেতুক দীর্ঘ।
6:30

2
এটি আজকের দিনে ঠিক সঠিক নয় not {sort: [['date', 1]]}কাজ করবে না, তবে .sort([['date', -1]])কাজ করবে। এই উত্তরটি দেখুন: stackoverflow.com/a/15081087/404699
steampowered

@ স্ট্যাম্পওয়ার্ড ধন্যবাদ, আমি একটি সম্পাদনা করব, আমার যদি ভুল হয় তবে আমাকে জানাতে বা সম্পাদনা করার জন্য আপনাকে খুব স্বাগত জানাই।
iwein

135

এইভাবে আমি মঙ্গুজে ২.৩.০ তে কাজ করার পদ্ধতি পেয়েছি :)

// Find First 10 News Items
News.find({
    deal_id:deal._id // Search Filters
},
['type','date_added'], // Columns to Return
{
    skip:0, // Starting Row
    limit:10, // Ending Row
    sort:{
        date_added: -1 //Sort by Date Added DESC
    }
},
function(err,allNews){
    socket.emit('news-load', allNews); // Do something with the array of 10 objects
})

7
মঙ্গুজ 3 এ আপনি Arrayআর মাঠের নির্বাচনের জন্য ব্যবহার করতে পারবেন না - এটি হতে হবে StringবাObject
পিকেইক

4
বিটিডব্লু, আপনি যদি সমস্ত ক্ষেত্র চান, আপনি কেবলমাত্র nullসেই বিভাগটি টানতে পারেন (কমপক্ষে 3.8 এ)
ম্যালকমন ওশিয়ান

63

মঙ্গুজ 3.8.x হিসাবে:

model.find({ ... }).sort({ field : criteria}).exec(function(err, model){ ... });

কোথায়:

criteriaহতে পারে asc, desc, ascending, descending, 1, অথবা-1


52

হালনাগাদ:

Post.find().sort({'updatedAt': -1}).all((posts) => {
  // do something with the array of posts
});

চেষ্টা করুন:

Post.find().sort([['updatedAt', 'descending']]).all((posts) => {
  // do something with the array of posts
});

13
সর্বশেষতম মঙ্গুজ (২.৪.১০) এ এটি .sort("updatedAt", -1)
মার্সেল জ্যাকওয়ার্থ

43
আরও সর্বশেষতম মঙ্গুজে (৩..6..6-প্রাক, তবে আমি নিশ্চিত যে এটি 3.x এর সকলের জন্যই বৈধ) এটি .sort({updatedAt: -1})বা .sort('-updatedAt')
Andreas Hultgren

2
তারপরে আপনার exec(function (posts) {…পরিবর্তে ব্যবহার করা উচিতall
বুজুত

আমি all() must be used after where() when called with these argumentsমঙ্গুজ 4.6.5 এ পেয়েছি ...
ড্যাম ফা

25

মঙ্গুজ v5.4.3

আরোহী ক্রম অনুসারে বাছাই করুন

Post.find({}).sort('field').exec(function(err, docs) { ... });
Post.find({}).sort({ field: 'asc' }).exec(function(err, docs) { ... });
Post.find({}).sort({ field: 'ascending' }).exec(function(err, docs) { ... });
Post.find({}).sort({ field: 1 }).exec(function(err, docs) { ... });

Post.find({}, null, {sort: { field : 'asc' }}), function(err, docs) { ... });
Post.find({}, null, {sort: { field : 'ascending' }}), function(err, docs) { ... });
Post.find({}, null, {sort: { field : 1 }}), function(err, docs) { ... });

সাজানো ক্রম অনুসারে সাজান

Post.find({}).sort('-field').exec(function(err, docs) { ... });
Post.find({}).sort({ field: 'desc' }).exec(function(err, docs) { ... });
Post.find({}).sort({ field: 'descending' }).exec(function(err, docs) { ... });
Post.find({}).sort({ field: -1 }).exec(function(err, docs) { ... });


Post.find({}, null, {sort: { field : 'desc' }}), function(err, docs) { ... });
Post.find({}, null, {sort: { field : 'descending' }}), function(err, docs) { ... });
Post.find({}, null, {sort: { field : -1 }}), function(err, docs) { ... });

বিশদের জন্য: https://mongoosejs.com/docs/api.html#query_Query-sort


23

হালনাগাদ

এটি যদি মানুষকে বিভ্রান্ত করে তবে আরও ভাল লিখতে হবে; দস্তাবেজগুলি অনুসন্ধান করতে এবং মংগস ম্যানুয়ালটিতে কীভাবে প্রশ্নগুলি কাজ করে তা পরীক্ষা করে দেখুন । আপনি যদি সাবলীল এপিআই ব্যবহার করতে চান তবে আপনি find()কোনও পদ্ধতিতে কলব্যাক না দিয়ে কোয়েরি অবজেক্টটি পেতে পারেন , অন্যথায় আপনি নীচের রূপরেখার হিসাবে পরামিতিগুলি নির্দিষ্ট করতে পারেন।

মূল

মডেলটিতে দস্তাবেজগুলির জন্য কোনও modelবস্তু দেওয়া হয়েছে , এটি এটির জন্য কীভাবে কাজ করতে পারে :2.4.1

Post.find({search-spec}, [return field array], {options}, callback)

search specএকটি বস্তু আশা, কিন্তু আপনি পাস করতে পারেন nullবা একটি খালি অবজেক্ট।

দ্বিতীয় PARAM স্ট্রিং একটি অ্যারে হিসাবে ক্ষেত্র তালিকা, তাই আপনি সরবরাহ করবে ['field','field2']বা null

তৃতীয় প্যারাম হ'ল একটি অবজেক্ট হিসাবে বিকল্পগুলি, যার মধ্যে ফলাফল সেটকে বাছাই করার ক্ষমতা অন্তর্ভুক্ত। আপনি { sort: { field: direction } }যেখানে fieldস্ট্রিংয়ের testক্ষেত্রের নাম (আপনার ক্ষেত্রে) ব্যবহার করবেন এবং directionএমন একটি সংখ্যা যেখানে 1আরোহী এবং -1নামা হচ্ছে।

চূড়ান্ত পরম ( callback) হল কলব্যাক ফাংশন যা কোয়েরি দ্বারা ফিরিয়ে নেওয়া ডক্সের সংগ্রহ গ্রহণ করে।

Model.find()(এই সংস্করণে কোণে) বাস্তবায়ন বৈশিষ্ট্য ঐচ্ছিক প্যারাম হ্যান্ডেল করতে একটি সহচরী বরাদ্দ করে (যা কি আমাকে বিভ্রান্ত!):

Model.find = function find (conditions, fields, options, callback) {
  if ('function' == typeof conditions) {
    callback = conditions;
    conditions = {};
    fields = null;
    options = null;
  } else if ('function' == typeof fields) {
    callback = fields;
    fields = null;
    options = null;
  } else if ('function' == typeof options) {
    callback = options;
    options = null;
  }

  var query = new Query(conditions, options).select(fields).bind(this, 'find');

  if ('undefined' === typeof callback)
    return query;

  this._applyNamedScope(query);
  return query.find(callback);
};

আছে HTH


অভিক্ষেপের জন্য: আমাদের স্ট্রিং সরবরাহ করতে হবে যাতে কলামের নাম স্থান সহ পৃথক পৃথক করা উচিত।
ম্যাডি


10

মঙ্গুজ 4 এ ক্যোয়ারী বিল্ডার ইন্টারফেসের সাথে শৃঙ্খলাবদ্ধ।

// Build up a query using chaining syntax. Since no callback is passed this will create an instance of Query.
var query = Person.
    find({ occupation: /host/ }).
    where('name.last').equals('Ghost'). // find each Person with a last name matching 'Ghost'
    where('age').gt(17).lt(66).
    where('likes').in(['vaporizing', 'talking']).
    limit(10).
    sort('-occupation'). // sort by occupation in decreasing order
    select('name occupation'); // selecting the `name` and `occupation` fields


// Excute the query at a later time.
query.exec(function (err, person) {
    if (err) return handleError(err);
    console.log('%s %s is a %s.', person.name.first, person.name.last, person.occupation) // Space Ghost is a talk show host
})

ক্যোয়ারী সম্পর্কে আরও তথ্যের জন্য ডক্স দেখুন ।


4

মঙ্গুজের বর্তমান সংস্করণ (1.6.0) সহ যদি আপনি কেবল একটি কলাম অনুসারে বাছাই করতে চান তবে আপনাকে অ্যারেটি ফেলে দিতে হবে এবং অবজেক্টটি সরাসরি বাছাই করতে হবে () ফাংশনে:

Content.find().sort('created', 'descending').execFind( ... );

এই অধিকার পেতে আমাকে কিছুটা সময় নিয়েছে :(


ধন্যবাদ। আপনার পোস্ট আমাকে সাহায্য করেছে। আমিও এর মুখোমুখি হয়েছি।
ব্যবহারকারী 644745

4
app.get('/getting',function(req,res){
    Blog.find({}).limit(4).skip(2).sort({age:-1}).then((resu)=>{
        res.send(resu);
        console.log(resu)
        // console.log(result)
    })
})

আউটপুট

[ { _id: 5c2eec3b8d6e5c20ed2f040e, name: 'e', age: 5, __v: 0 },
  { _id: 5c2eec0c8d6e5c20ed2f040d, name: 'd', age: 4, __v: 0 },
  { _id: 5c2eec048d6e5c20ed2f040c, name: 'c', age: 3, __v: 0 },
  { _id: 5c2eebf48d6e5c20ed2f040b, name: 'b', age: 2, __v: 0 } ]



2

অন্যরা আমার পক্ষে কাজ করেছিল, কিন্তু এটি করেছে:

  Tag.find().sort('name', 1).run(onComplete);



1

৪.x থেকে শুরু করে সাজানোর পদ্ধতিগুলি পরিবর্তন করা হয়েছে। আপনি যদি ব্যবহার করেন> 4.x। নিম্নলিখিত যে কোন একটি ব্যবহার করে দেখুন।

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

0
Post.find().sort('updatedAt').exec((err, post) => {...});

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