2017-05-12 5 views
0

잘못된 방법 :몽구스 분류 번호 나는 몽구스의 간단한 스키마가

var ShotSchema = new mongoose.Schema({ 
    code: Number, 
    active: Boolean 
}); 

이 정적 기능을 실행 한 후 코드 번호를 사용하여 쿼리 정렬 :

findShotMax: function(seq, cb) { 
    this.find({sequence: seq}) 
    .sort('code') 
    // .limit(1) 
    .exec(cb); 
} 

을 나는 이상한 방법으로 정렬 샷을 얻을 :

10, 
100, 
110, 
120, 
140, 
20, 
30, 
40, 
.... 

정상적인 방법으로 주문을 수정하려면 어떻게해야하나요?

+2

해당 스키마를 사용하여 모든 문서를 데이터베이스에 저장 했습니까? 아니면 해당 데이터가 이미 컬렉션에 있습니까? 숫자 대신 문자열로 저장됩니다. – robertklep

+0

정확합니다. 이전에 문자열 값으로 저장되었습니다. 그게 문제를 일으키고 있습니까? 유형 변환을 수행해야합니까? –

+0

예, 문제의 원인입니다. 데이터베이스의 데이터를 문자열에서 숫자로 변환해야합니다 (Mongoose는 정렬과 관련이 거의 없으며 MongoDB 서버 내부에서 수행됩니다). – robertklep

답변

1

데이터를 먼저 저장하고 스키마를 만든 것 같습니다.

먼저 문자열을 정수로 변환해야합니다. 다음을 사용하십시오 :

db.shortCollection.find({}).forEach(function(obj) { 
    obj.code = new NumberInt(obj.code); 
    db.shortCollection.save(obj); 
}); 

그리고 다시 쿼리를 시도 할 수 있습니다.

관련 문제