복붙노트

[MONGODB] 어떻게 그 널 (null)은 지난 MongoDB를에 정렬 정렬 할 수 있습니다로?

MONGODB

어떻게 그 널 (null)은 지난 MongoDB를에 정렬 정렬 할 수 있습니다로?

나는 몽고 쉘에서이 쿼리를 실행

db.getCollection('list').find({}).sort({next_time: 1})

결과는

next_time
--
null
null
null
2015-02-21 00:00:00
2015-03-25 00:00:00
2015-08-29 00:00:00

이 같은 결과를 만들 수 있도록 노력하겠습니다

next_time
--
2015-02-21 01:00:00
2015-03-25 01:00:00
2015-08-29 01:00:00
null
null
null

서로 다른는 널의 마지막 목록에 정렬 ​​'이다. 나는 이것을 위해 어떻게 할 수 있습니까?

해결법

  1. ==============================

    1.아마 당신은 집계하고 인위적으로 하이 엔드 날짜를 사용할 수 있습니다 :

    아마 당신은 집계하고 인위적으로 하이 엔드 날짜를 사용할 수 있습니다 :

    c = db.foo.aggregate([
    {$project: {
                next_time: 1,
                nlt: { $ifNull: [ "$next_time", new ISODate("9000-01-01") ] }
      }     
    }
    ,
    {$sort: { "nlt": 1}}
                      ]);
    c.forEach(function(r) { printjson(r); });
    

    재료의 대부분이 널 (null)을 가지고 있으며, 모든에서 그 문서를 처리하지 않으려는 경우 또는, 다음, 그들을 필터링하고 단지 $ 종류의 나머지 :

    db.foo.aggregate([
    {$match: {"nt": {$exists: true}}}
    ,
    {$sort: { "nt": 1}}
                     ]);
    
  2. from https://stackoverflow.com/questions/31084446/how-can-i-sort-into-that-nulls-are-last-ordered-in-mongodb by cc-by-sa and MIT license