在猫鼬中,.sort()。skip()和.skip()。sort()之间有区别吗?

时间:2020-01-14 03:02:17

标签: mongodb mongoose

您可以看到标题,.sort().skip().skip().sort()有区别吗?

mongoose处理吗?

1 个答案:

答案 0 :(得分:2)

不,没有区别。 .sort()总是在之前应用于.skip(),这很有意义,因为您希望确定性地获得结果,以便能够以可预测的方式跳过其中的一些结果。

以下查询将返回不同的结果,因为.skip().sort()将重新排序以进行查询,并按指定的顺序保持.aggregate()的使用:

let results = await Test.aggregate([{ $skip: 2 }, { $sort: { a: 1 } }]);

let results2 = await Test.find().skip(2).sort({ a: 1 });

内部第二种语法只是构建.find() options的对象,其中键的顺序无关紧要:

Mongoose: tests.find({}, { skip: 2, sort: { a: 1 }, projection: {} })

Mongoose: tests.find({}, { sort: { a: 1 }, skip: 2, projection: {} })

您可以添加mongoose.set('debug', true);进行跟踪。