@@ -936,10 +936,22 @@ MongoDB.prototype.buildWhere = function(model, where) {
936
936
return query ;
937
937
} ;
938
938
939
- MongoDB . prototype . buildSort = function ( model , order ) {
939
+ MongoDB . prototype . buildSort = function ( model , order , options ) {
940
940
var sort = { } ;
941
941
var idName = this . idName ( model ) ;
942
- if ( ! order ) {
942
+
943
+ var modelClass = this . _models [ model ] ;
944
+
945
+ var disableDefaultSort = this . settings . disableDefaultSort ;
946
+ if ( options && options . hasOwnProperty ( 'disableDefaultSort' ) ) {
947
+ disableDefaultSort = options . disableDefaultSort === true ;
948
+ } else if ( disableDefaultSort !== false && modelClass . settings . hasOwnProperty ( 'disableDefaultSort' ) ) {
949
+ disableDefaultSort = modelClass . settings . disableDefaultSort === true ;
950
+ } else if ( disableDefaultSort === true ) {
951
+ disableDefaultSort = true ;
952
+ }
953
+
954
+ if ( ! order && ! disableDefaultSort ) {
943
955
var idNames = this . idNames ( model ) ;
944
956
if ( idNames && idNames . length ) {
945
957
order = idNames ;
@@ -966,7 +978,7 @@ MongoDB.prototype.buildSort = function(model, order) {
966
978
sort [ key ] = 1 ;
967
979
}
968
980
}
969
- } else {
981
+ } else if ( ! disableDefaultSort ) {
970
982
// order by _id by default
971
983
sort = { _id : 1 } ;
972
984
}
@@ -1224,7 +1236,7 @@ MongoDB.prototype.all = function all(model, filter, options, callback) {
1224
1236
1225
1237
// don't apply sorting if dealing with a geo query
1226
1238
if ( ! hasNearFilter ( filter . where ) ) {
1227
- var order = self . buildSort ( model , filter . order ) ;
1239
+ var order = self . buildSort ( model , filter . order , options ) ;
1228
1240
cursor . sort ( order ) ;
1229
1241
}
1230
1242
0 commit comments