2017-11-25 16 views
0

다음과 같은 document을 만들고 싶습니다. 2dsphere index을 만들고 싶지만 coordinates fieldinteger BSON type이어야합니다. 그러나 client에서 오는 data type은 좌표가 string입니다.MongoDb에 삽입 할 때 좌표에 BSON 유형을 어떻게 지정할 수 있습니까?

그래서 색인을 생성 할 수 있도록 MongoDb에 삽입하기 전에이를 정수로 변경하고 싶습니다. 어떻게하면됩니까?

user.saveSubscriber = (jSubscriberData, fCallback) => { 
    var jSubscriber = { 
     email: jSubscriberData.txtEmail, 
     firstName: jSubscriberData.txtName, 
     lastName: jSubscriberData.txtLastName, 
     address: { 
      type: "Point", 
      coordinates: [jSubscriberData.lng, jSubscriberData.lat] 
     } 
    } 
    global.db.collection('subscribers').insertOne(jSubscriber, (err, jResult) => { 

     if (err) { 
      var jError = { "status": "error", "message": "ERROR -> saveSubscriber -> user.js -> 001" } 
      return fCallback(false, jError) 
     } 
     var jOk = { "status": "ok", "message": "user.js -> subscriber saved -> 000" } 
     return fCallback(false, jOk) 
    }) 
} 

답변

1

그냥 내가 NodeJS를 사용하고 있음을 언급하는 것을 깜빡 parseFloat()

user.saveSubscriber = (jSubscriberData, fCallback) => { 
var jSubscriber = { 
    email: jSubscriberData.txtEmail, 
    firstName: jSubscriberData.txtName, 
    lastName: jSubscriberData.txtLastName, 
    address: { 
     type: "Point", 
     coordinates: [parseFloat(jSubscriberData.lng), parseFloat (jSubscriberData.lat)] 
    } 
} 
global.db.collection('subscribers').insertOne(jSubscriber, (err, jResult) => { 

    if (err) { 
     var jError = { "status": "error", "message": "ERROR -> saveSubscriber -> user.js -> 001" } 
     return fCallback(false, jError) 
    } 
    var jOk = { "status": "ok", "message": "user.js -> subscriber saved -> 000" } 
    return fCallback(false, jOk) 
}) 

}

+0

를 사용하여 문자열을 저장하기 전에 떠 구문 분석합니다. 그렇다면 아직도 관련이 있습니까? – codeDragon

+0

예, 제대로 작동합니다. parseFlaot()는 js 메서드입니다. – daemon24

+0

$ type = "double"을 설정하여 https://docs.mongodb.com/manual/core/document-validation/의 검증 방법은 어떻습니까? – codeDragon