2017-11-25 8 views
0

私は2dsphere indexを作成したいのに、documentを持っていますが、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

関連する問題