मुझे इस तरह के संशोधक के लिए कोई डॉक नहीं मिला। इकाई परीक्षणों में एकमात्र अंतर्दृष्टि है: spec.lib.query.js # L12
writer.limit(5).sort(['test', 1]).group('name')
लेकिन यह मेरे लिए काम नहीं करता है:
Post.find().sort(['updatedAt', 1]);
मुझे इस तरह के संशोधक के लिए कोई डॉक नहीं मिला। इकाई परीक्षणों में एकमात्र अंतर्दृष्टि है: spec.lib.query.js # L12
writer.limit(5).sort(['test', 1]).group('name')
लेकिन यह मेरे लिए काम नहीं करता है:
Post.find().sort(['updatedAt', 1]);
जवाबों:
Mongoose में, निम्न में से किसी भी तरीके से एक सॉर्ट किया जा सकता है:
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) { ... });
{sort: [['date', 1]]}
काम नहीं करेगा, लेकिन .sort([['date', -1]])
काम करेगा। इस उत्तर को देखें: stackoverflow.com/a/15081087/404699
यह है कि मैं कैसे 2.3.0 :) में काम करने के लिए सॉर्ट किया गया
// 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
})
Array
क्षेत्र चयन अब के लिए - यह हो गया है String
याObject
null
उस खंड (कम से कम 3.8 में) में खींच सकते हैं
Mongoose 3.8.x के अनुसार:
model.find({ ... }).sort({ field : criteria}).exec(function(err, model){ ... });
कहाँ पे:
criteria
हो सकता है asc
, desc
, ascending
, descending
, 1
, या-1
अपडेट करें:
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
});
.sort("updatedAt", -1)
।
.sort({updatedAt: -1})
या .sort('-updatedAt')
।
exec(function (posts) {…
बजायall
all() must be used after where() when called with these arguments
मोंगोज 4.6.5 में मिला है ...
मानगो 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
अपडेट करें
यह लोगों को भ्रमित कर रहा है तो एक बेहतर लेखन है; दस्तावेज़ों की जाँच करें और मानगूस मैनुअल में कैसे क्वेरीज़ काम करती हैं । यदि आप धाराप्रवाह एपीआई का उपयोग करना चाहते हैं, तो आप find()
विधि को कॉलबैक न देकर एक क्वेरी ऑब्जेक्ट प्राप्त कर सकते हैं , अन्यथा आप मापदंडों को निर्दिष्ट कर सकते हैं जैसा कि मैं नीचे उल्लिखित करता हूं।
मूल
मॉडल परmodel
दिए गए डॉक्स के अनुसार किसी वस्तु को देखते हुए , यह इस प्रकार काम कर सकता है 2.4.1
:
Post.find({search-spec}, [return field array], {options}, callback)
search spec
एक वस्तु की अपेक्षा करता है, लेकिन आप null
एक खाली वस्तु को पारित या कर सकते हैं ।
दूसरा परम क्षेत्र स्ट्रिंग की एक सरणी के रूप में क्षेत्र सूची है, इसलिए आप आपूर्ति करेंगे ['field','field2']
या null
।
तीसरा परम एक वस्तु के रूप में विकल्प है, जिसमें परिणाम सेट को सॉर्ट करने की क्षमता शामिल है। आप का प्रयोग करेंगे { sort: { field: direction } }
जहां field
स्ट्रिंग FIELDNAME है test
(आपके मामले में) और direction
एक नंबर है, जहां है 1
आरोही जाता है और -1
desceding है।
अंतिम पैराम ( 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
इस तरह से मुझे mongoose.js 2.0.4 में काम करने का क्रम मिला
var query = EmailModel.find({domain:"gmail.com"});
query.sort('priority', 1);
query.exec(function(error, docs){
//...
});
Mongoose 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
})
प्रश्नों के बारे में अधिक जानकारी के लिए डॉक्स देखें ।
मोंगोज़ो के मौजूदा संस्करण (1.6.0) के साथ यदि आप केवल एक कॉलम को छांटना चाहते हैं , तो आपको सरणी को छोड़ना होगा और ऑब्जेक्ट को सीधे सॉर्ट () फ़ंक्शन में पास करना होगा:
Content.find().sort('created', 'descending').execFind( ... );
इस अधिकार को पाने के लिए मुझे कुछ समय लगा :(
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 } ]
यह है कि मैं कैसे छाँटने और आबाद करने में कामयाब रहा:
Model.find()
.sort('date', -1)
.populate('authors')
.exec(function(err, docs) {
// code here
})
दूसरों ने मेरे लिए काम किया, लेकिन यह किया:
Tag.find().sort('name', 1).run(onComplete);
यह मैंने क्या किया, यह ठीक काम करता है।
User.find({name:'Thava'}, null, {sort: { name : 1 }})
4.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) { ... });
Post.find().sort('updatedAt').exec((err, post) => {...});