summaryrefslogtreecommitdiffstats
path: root/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial/person.js
blob: e816637167b89b416a01740d58d4e444408c210b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// import the necessary modules
var mongoose = require('../../lib');
var Schema = mongoose.Schema;

// create an export function to encapsulate the model creation
module.exports = function() {
  // define schema
  var PersonSchema = new Schema({
    name: String,
    age: Number,
    birthday: Date,
    gender: String,
    likes: [String],
    // define the geospatial field
    loc: {type: [Number], index: '2d'}
  });

  // define a method to find the closest person
  PersonSchema.methods.findClosest = function(cb) {
    return this.model('Person').find({
      loc: {$nearSphere: this.loc},
      name: {$ne: this.name}
    }).limit(1).exec(cb);
  };

  mongoose.model('Person', PersonSchema);
};