नेवला संस्करण में भू-स्थानिक निर्देशांक के साथ: 3.6 नोड संस्करण: 0.10का उपयोग कर() नेवला (NodeJS + MongoDB)
मैं घंटों के लिए इस समस्या को हल करने के लिए कोशिश कर रहे हैं। मैं कुछ निर्देशांकों के लिए अधिकतम दस्तावेजों के मुकाबले सभी दस्तावेज ढूंढना चाहता हूं। मैं मोंगोडीबी (2dsphere) के जियोजसन विनिर्देशों का उपयोग करने की कोशिश कर रहा हूं, ताकि मैं मीटर में दूरी इनपुट कर सकूं।
यह मेरा स्कीमा "venue.js" है:
var db = require('mongoose'),
Schema = db.Schema,
ObjectId = Schema.ObjectId;
var venueSchema = new Schema({
geo: { type: [Number], index: '2dsphere'},
city: String,
name: String,
address: String
});
module.exports = db.model('Venue', venueSchema);
यह वह जगह है जहाँ मैं क्वेरी ctrlVenue.js सम्मिलित करें:
var Venue = require('../models/venue.js');
VenueController = function(){};
/** GET venues list ordered by the distance from a "geo" parameter. Endpoint: /venues
Params:
- geo: center for the list of venues - longitude, latitude (default: 25.466667,65.016667 - Oulu);
- maxDistance: maxímum distance from the center for the list of venues (default: 0.09)
**/
exports.getVenues =function(req, res) {
var maxDistance = typeof req.params.maxDistance !== 'undefined' ? req.params.maxDistance : 0.09; //TODO: validate
var geo = typeof req.params.geo !== 'undefined' ? req.params.geo.split(',') : new Array(25.466667, 65.016667); //TODO: validate
var lonLat = { $geometry : { type : "Point" , coordinates : geo } };
Venue.find({ geo: {
$near: lonLat,
$maxDistance: maxDistance
}}).exec(function(err,venues){
if (err)
res.send(500, 'Error #101: '+err);
else
res.send(venues);
});
}
मैं त्रुटि प्राप्त जब मैं कोड चलाएँ:
"Error #101: CastError: Cast to number failed for value \"[object Object]\" at path \"geo\""
मैं बजाय इस लाइन को संशोधित करते हैं:
$near: lonLat,
$near: geo,
मैं सही ढंग से दस्तावेज प्राप्त है, लेकिन फिर, मैं माप की इकाई के रूप में मीटर की दूरी पर उपयोग नहीं कर सकते के साथ
। एक साथ $ ज्यामिति का उपयोग कर कामकाज उदाहरण के http://docs.mongodb.org/manual/reference/operator/query-geospatial/
मैंने देखा है बहुत सारे लेकिन कोई भी $ के पास के साथ: मैं निम्न तालिका पर मेरी मान्यताओं पर आधारित है। मैं क्या गलत कर रहा हूं?
हम्म, आपकी क्वेरी सही ढंग से निर्माण है, लेकिन मुझे यकीन है कि क्यों नेवला एक फिट फेंक है नहीं कर रहा हूँ! – Derick
@ डेरिक जो मैंने सोचा था। और इस तरह का उपयोग मुझे इतना बुनियादी दिखता है कि अगर मैं अकेला हूं तो मैं बहुत ही आश्चर्यचकित हूं ... – syymza