mongooseで位置 糞サンプル

緯度経度はコンソールでdb.name.ensureIndex({ "loc" : "2d" });みたいなことをせよ。
model/photo.js

var Mongoose = require('mongoose');
var mongoose = new Mongoose.Mongoose();
var db = mongoose.connect('mongodb://localhost:27017/db_name');

var Photo = new Schema({
    data : { type : String, required : true },
    loc : {
        lat : {
            type : Number,
            required : true
        },
        lng : {
            type : Number,
            required : true
        }
    }
});

mongoose.model('Photo', Photo, 'Photo', false);
module.exports = db.model('Photo');

半径3kmの写真を3件検索

var EventEmitter = require('events').EventEmitter;
var Photo = require('path/to/photo');

var find = function(query){
    var ev = new EventEmitter();
    Photo.find(query, {}, { sort : { '_id' : -1 }, limit : 3 }, function(error, photos){
        if(!error && photos){
            ev.emit('end', photos);
        }else{
            console.log(error);
            ev.emit('error');
        }
    });
    return ev;
};

var searching_photos = find({
    loc : {
        $nearSphere : [35.698619, 139.773288], // longitude, latitude
        $maxDistance: 0.00092 // たしかこれで3km
    }
});
searching_photos.on('end', function(photos){
    return photos;
});
searching_photos.on('end', function(){
    return;
});

こんな感じ。動作確認してない。