Wie man Mungo sortiert?

Lesezeit: 5 Minuten

Wie man Mungo sortiert
Philippe Rathe

Ich finde kein Dokument für den Sortiermodifikator. Die einzige Erkenntnis ist in den Unit-Tests:
spec.lib.query.js#L12

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

Aber bei mir funktioniert es nicht:

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

  • Lesen Sie diese Antwort für eine aktuelle Antwort.

    – Francisco Presencia

    2. April 15 um 12:02 Uhr

Wie man Mungo sortiert
iwein

In Mongoose kann eine Sortierung auf eine der folgenden Arten erfolgen:

    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) { ... });

  • Dies ist fast eine direkte Kopie der von Francisco Presencia verlinkten Antwort. Leider sind die am häufigsten bewerteten Antworten veraltet und unnötig lang.

    – iwein

    5. August 15 um 6:28 Uhr

  • Das ist aus heutiger Sicht nicht ganz richtig. {sort: [['date', 1]]} wird nicht funktionieren, aber .sort([['date', -1]]) wird funktionieren. Siehe diese Antwort: stackoverflow.com/a/15081087/404699

    – dampfbetrieben

    30. April 16 um 21:52 Uhr


  • @steampowered danke, ich werde eine Bearbeitung vornehmen, du kannst mich gerne wissen lassen oder bearbeiten, wenn ich es falsch verstanden habe.

    – iwein

    21. November 17 um 14:56 Uhr

  • Würde gerne ein paar Bemerkungen darüber sehen, was das Ergebnis ist, insb. was zum 1 und -1 Werte bedeuten, anstatt 4 Codezeilen ohne viel Kontext zu haben

    – Philipp

    29. Dezember 21 um 16:39 Uhr


So habe ich es geschafft, in Mongoose 2.3.0 zu arbeiten 🙂

// 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
})

  • In Mongoose 3 können Sie nicht verwenden Array für Feldauswahl mehr – es muss sein String oder Object

    – Philipp Kyeck

    14. Oktober 12 um 7:30 Uhr

  • Übrigens, wenn Sie alle Felder wollen, können Sie einfach ziehen null in diesem Abschnitt (zumindest in 3.8)

    – MalcolmOcean

    4. Februar 15 um 16:25 Uhr

Wie man Mungo sortiert
Benutzer3784764

Ab Mongoose 3.8.x:

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

Wo:

criteria kann sein asc, desc, ascending, descending, 1, oder -1

Hinweis: Verwenden Sie Anführungszeichen oder doppelte Anführungszeichen

benutzen "asc", "desc", "ascending", "descending", 1, oder -1

1642757107 807 Wie man Mungo sortiert
Sultan Aslam

Mungo v5.xx

nach aufsteigender Reihenfolge sortieren

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) { ... });

nach absteigender Reihenfolge sortieren

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) { ... });

Für Details: https://mongoosejs.com/docs/api.html#query_Query-sort

  • Im neuesten Mongoose (2.4.10) ist es .sort("updatedAt", -1).

    – Marcel Jackwerth

    12. Januar 12 um 15:27 Uhr

  • Im noch aktuelleren Mongoose (3.5.6-pre, aber ich bin mir ziemlich sicher, dass es für alle 3.x gültig ist) ist es .sort({updatedAt: -1}) oder .sort('-updatedAt').

    – Andreas Hultgren

    11. Februar 13 um 9:21 Uhr

  • Dann sollten Sie verwenden exec(function (posts) {… anstatt all

    – Buzut

    27. August 15 um 11:14 Uhr

  • Ich habe ein all() must be used after where() when called with these arguments in Mongoose 4.6.5 …

    – Damm Fa

    24. Januar 17 um 23:56 Uhr

1642757108 329 Wie man Mungo sortiert
AJ.

Aktualisieren

Es gibt eine bessere Beschreibung, wenn dies die Leute verwirrt; Kasse Dokumente finden und wie Abfragen funktionieren im Mungo-Handbuch. Wenn Sie die Fluent-API verwenden möchten, können Sie ein Abfrageobjekt erhalten, indem Sie keinen Rückruf für die bereitstellen find() -Methode, andernfalls können Sie die Parameter wie unten beschrieben angeben.

Original

Angenommen model Objekt, pro docs auf Modell, so kann es funktionieren 2.4.1:

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

Der search spec erwartet ein Objekt, aber Sie können passieren null oder ein leeres Objekt.

Der zweite Parameter ist die Feldliste als ein Array von Zeichenfolgen, also würden Sie angeben ['field','field2'] oder null.

Der dritte Parameter sind die Optionen als Objekt, das die Möglichkeit beinhaltet, die Ergebnismenge zu sortieren. Du würdest verwenden { sort: { field: direction } } wo field ist die Zeichenfolge Feldname test (in Ihrem Fall) und direction ist eine Zahl wo 1 ist aufsteigend und -1 ist absteigend.

Der letzte Parameter (callback) ist die Rückruffunktion, die die von der Abfrage zurückgegebene Sammlung von Dokumenten empfängt.

Der Model.find() Die Implementierung (in dieser Version) führt eine gleitende Zuordnung von Eigenschaften durch, um optionale Parameter zu behandeln (was mich verwirrt hat!):

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

  • Für die Projektion: Wir müssen eine Zeichenfolge angeben, die durch Leerzeichen getrennte Spaltennamen enthält.

    – Maddie

    27. November 15 um 8:02 Uhr

1642757108 30 Wie man Mungo sortiert
Salida-Software

So habe ich es geschafft, in mongoose.js 2.0.4 zu arbeiten

var query = EmailModel.find({domain:"gmail.com"});
query.sort('priority', 1);
query.exec(function(error, docs){
  //...
});

  • Für die Projektion: Wir müssen eine Zeichenfolge angeben, die durch Leerzeichen getrennte Spaltennamen enthält.

    – Maddie

    27. November 15 um 8:02 Uhr

Verketten mit der Abfrageerstellungsschnittstelle in 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
})

Siehe die Dokumente Weitere Informationen zu Abfragen.

.

574030cookie-checkWie man Mungo sortiert?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy