Saya tidak menemukan dokumen untuk pengubah sortir. Satu-satunya wawasan adalah dalam unit test: spec.lib.query.js # L12
writer.limit(5).sort(['test', 1]).group('name')
Tapi itu tidak berhasil untuk saya:
Post.find().sort(['updatedAt', 1]);
Saya tidak menemukan dokumen untuk pengubah sortir. Satu-satunya wawasan adalah dalam unit test: spec.lib.query.js # L12
writer.limit(5).sort(['test', 1]).group('name')
Tapi itu tidak berhasil untuk saya:
Post.find().sort(['updatedAt', 1]);
Jawaban:
Dalam bahasa Mongoose, pengurutan dapat dilakukan dengan salah satu cara berikut:
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]]}
tidak akan bekerja, tetapi .sort([['date', -1]])
akan bekerja. Lihat jawaban ini: stackoverflow.com/a/15081087/404699
Ini adalah bagaimana saya dapat menyortir luwak 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
untuk pemilihan bidang lagi - harus String
atauObject
null
bagian itu (setidaknya dalam 3,8)
Mulai dari Mongoose 3.8.x:
model.find({ ... }).sort({ field : criteria}).exec(function(err, model){ ... });
Dimana:
criteria
bisa asc
, desc
, ascending
, descending
, 1
, atau-1
MEMPERBARUI:
Post.find().sort({'updatedAt': -1}).all((posts) => {
// do something with the array of posts
});
Mencoba:
Post.find().sort([['updatedAt', 'descending']]).all((posts) => {
// do something with the array of posts
});
.sort("updatedAt", -1)
.
.sort({updatedAt: -1})
atau .sort('-updatedAt')
.
exec(function (posts) {…
sebagai gantinyaall
all() must be used after where() when called with these arguments
dalam Mongoose 4.6.5 ...
Mongoose v5.4.3
urutkan berdasarkan urutan menaik
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) { ... });
urutkan berdasarkan urutan menurun
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) { ... });
Untuk Detail: https://mongoosejs.com/docs/api.html#query_Query-sort
Memperbarui
Ada tulisan yang lebih baik jika ini membingungkan orang; lihat dokumen temuan dan bagaimana kueri bekerja dalam manual luwak. Jika Anda ingin menggunakan api fasih Anda bisa mendapatkan objek permintaan dengan tidak memberikan panggilan balik ke find()
metode, jika tidak, Anda dapat menentukan parameter seperti yang saya uraikan di bawah ini.
Asli
Diberikan model
objek, per dokumen pada Model , ini adalah cara kerjanya 2.4.1
:
Post.find({search-spec}, [return field array], {options}, callback)
Yang search spec
mengharapkan suatu objek, tetapi Anda bisa lewat null
atau objek kosong.
Param kedua adalah daftar bidang sebagai array string, jadi Anda akan memberikan ['field','field2']
atau null
.
Param ketiga adalah opsi sebagai objek, yang mencakup kemampuan untuk mengurutkan set hasil. Anda akan menggunakan di { sort: { field: direction } }
mana field
string fieldname test
(dalam kasus Anda) dan direction
merupakan nomor di mana 1
naik dan -1
desceding.
Param terakhir ( callback
) adalah fungsi callback yang menerima kumpulan dokumen yang dikembalikan oleh kueri.
The Model.find()
pelaksanaan (di versi ini) melakukan alokasi geser properti untuk menangani params opsional (yang adalah apa yang saya bingung!):
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
Ini adalah bagaimana saya dapat menyortir bekerja di mongoose.js 2.0.4
var query = EmailModel.find({domain:"gmail.com"});
query.sort('priority', 1);
query.exec(function(error, docs){
//...
});
Rantai dengan antarmuka pembuat kueri di 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
})
Lihat dokumen untuk lebih lanjut tentang kueri.
dengan versi luwak (1.6.0) saat ini jika Anda hanya ingin mengurutkan berdasarkan satu kolom, Anda harus meletakkan array dan meneruskan objek langsung ke fungsi sort ():
Content.find().sort('created', 'descending').execFind( ... );
Butuh waktu beberapa lama untuk melakukan ini :(
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)
})
})
Keluaran
[ { _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 } ]
Beginilah cara saya menyortir dan mengisi:
Model.find()
.sort('date', -1)
.populate('authors')
.exec(function(err, docs) {
// code here
})
Yang lain bekerja untuk saya, tetapi ini berhasil:
Tag.find().sort('name', 1).run(onComplete);
Inilah yang saya lakukan, itu berfungsi dengan baik.
User.find({name:'Thava'}, null, {sort: { name : 1 }})
Mulai dari 4.x metode pengurutan telah diubah. Jika Anda menggunakan> 4.x. Coba gunakan salah satu dari yang berikut ini.
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) => {...});