MongoError: не может найти специальных индексов: 2d (индекс потребности), 2dsphere (индекс потребности)

Я пытаюсь использовать MongoDB Geospatial Indexing, запрашивая точки широты и долготы вокруг определенной точки, используя метод поиска MongoDB. Я продолжаю получать ошибку:

MongoError: не может найти специальных индексов: 2d (индекс потребности), 2dsphere (индекс потребности)

Я не уверен, где документация для этого после Googling около часа. Также я не могу найти никаких хороших объяснений. Вот схема, которую я создал с помощью Mongoose:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var EventSchema = new Schema ({
  name: String,
  description: String,
  location: {type: [String], index: '2dsphere'},
  time: Date,
  photo: Buffer,
  activity: String
});

mongoose.model('Event', EventSchema);

Затем я использую метод find для поиска других документов событий в той точке, в которой пользователь предоставляет.

var maxDistance = 0.09;
var lonLat = {$geometry: {type: 'Point', coordinates: [34.09,124.34] }};

Event.find({
  'geo': {
    $near: lonLat,
    $maxDistance: maxDistance
  }
}).exec(function(err, events) {
  if(err) {
    throw err;
  } else {
    return events;
  }
});

Какой синтаксис я имею здесь? Я пропустил что-то огромное? Любые ссылки на любую документацию будут отличными, кроме этой ссылки.

4
задан Matt Goo 06 окт. '13 в 23:11
источник поделиться
1 ответ

Вы пытались создать индекс с этим предложением?

db.event.ensureIndex({ "location": "2d" })

Это немного смущает ваш пример. Я не понимаю, если "местоположение" - это ваши координаты или "гео", потому что вы создаете схему с первым и запрашиваете с последним.

В обоих случаях хорошей идеей является выполнение

db.event.findOne(). Довольно()

Итак, вы можете проверить формат своей коллекции.

Также с помощью этой команды вы можете проверить свои текущие индексы.

db.event.getIndexes()

Все это работает, если вы работаете над коллекцией событий.

2
ответ дан mazzi 01 янв. '14 в 3:24
источник поделиться

Другие вопросы по меткам