Git Product home page Git Product logo

Comments (3)

vkarpov15 avatar vkarpov15 commented on June 28, 2024 1

TestModel.find().sort({ $natural: 1 }).sort({ creationDate: 'desc' }) will make the sort condition { $natural: 1, creationDate: -1 }. To make sort() overwrite the existing query sort instead of merging, use .sort({ creationDate: 'desc' }, { overwrite: true })

from mongoose.

IslandRhythms avatar IslandRhythms commented on June 28, 2024

Please modify the following script to demonstrate your issue:

const mongoose = require('mongoose');

const testSchema = new mongoose.Schema({
  name: String,
  age: Number
});

const Test = mongoose.model('Test', testSchema);

async function run() {
  await mongoose.connect('mongodb://localhost:27017');
  await mongoose.connection.dropDatabase();

  for (let i = 0; i < 11; i++) {
    await Test.create({
      name: `Test${i}`,
      age: i
    });
  }

  const natural = await Test.find().sort({ $natural: 1 });
  console.log('This is natural', natural)
  const res = await Test.find().sort({ age: -1 });
  console.log('this is res', res);
}

run();

from mongoose.

top-kat avatar top-kat commented on June 28, 2024

@vkarpov15 actually, the way it works is fine, merging is the expected behavior for me. Btw thanks for the tips ;)

@IslandRhythms thanks for your reactivity. Here is the modified script:

const mongoose = require('mongoose');

const testSchema = new mongoose.Schema({
  name: String,
  age: Number
});

const Test = mongoose.model('Test', testSchema);

async function run() {
  await mongoose.connect('mongodb://127.0.0.1:27017/test2');
  await mongoose.connection.dropDatabase();

  for (let i = 0; i < 11; i++) {
    await Test.create({
      name: `Test${i}`,
      age: i
    });
  }

  const promise = Test.find().sort({ $natural: 1 })

  promise.sort({ age: -1 })

  console.log('this is res', await promise);
}

run();

As expected, it throws the same error:

yarn run v1.22.21
$ node ./app.js
/Users/garcias/DEV/00_test/mongoose/node_modules/mongodb/lib/cmap/connection.js:281
                    throw new error_1.MongoServerError(document);
                          ^

MongoServerError: $natural sort cannot be set to a value other than -1 or 1.
    at Connection.sendCommand (/Users/garcias/DEV/00_test/mongoose/node_modules/mongodb/lib/cmap/connection.js:281:27)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async Connection.command (/Users/garcias/DEV/00_test/mongoose/node_modules/mongodb/lib/cmap/connection.js:304:26)
    at async Server.command (/Users/garcias/DEV/00_test/mongoose/node_modules/mongodb/lib/sdam/server.js:169:24)
    at async executeOperation (/Users/garcias/DEV/00_test/mongoose/node_modules/mongodb/lib/operations/execute_operation.js:126:16)
    at async FindCursor._initialize (/Users/garcias/DEV/00_test/mongoose/node_modules/mongodb/lib/cursor/find_cursor.js:55:26)
    at async [kInit] (/Users/garcias/DEV/00_test/mongoose/node_modules/mongodb/lib/cursor/abstract_cursor.js:454:27)
    at async next (/Users/garcias/DEV/00_test/mongoose/node_modules/mongodb/lib/cursor/abstract_cursor.js:514:13)
    at async [Symbol.asyncIterator] (/Users/garcias/DEV/00_test/mongoose/node_modules/mongodb/lib/cursor/abstract_cursor.js:160:34)
    at async FindCursor.toArray (/Users/garcias/DEV/00_test/mongoose/node_modules/mongodb/lib/cursor/abstract_cursor.js:273:26) {
  errorResponse: {
    ok: 0,
    errmsg: '$natural sort cannot be set to a value other than -1 or 1.',
    code: 2,
    codeName: 'BadValue'
  },
  ok: 0,
  code: 2,
  codeName: 'BadValue',
  [Symbol(errorLabels)]: Set(0) {}
}

Node.js v18.18.2
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

from mongoose.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.