2016-10-07 3 views
0

У меня есть MongoDB схема вроде этого:2d Индекс по MongoDB с вложенным объектом

var PlumberSchema = new Schema({ 
     firstname: { 
      type: String 
     }, 
     ... 
     office: { 
      address:{ type:String }, 
      location: { type:[Number], index: '2d'} 
     } 
     ... 
} 

Где что индекса: «2d» является положением, когда мне нужно создать индекс 2D для геопространственного поиска ,

Для того, чтобы сделать это, я прочитал документацию: https://docs.mongodb.com/manual/tutorial/build-a-2d-index/ и есть пример, что для удобства Докладываю:

db.<collection>.createIndex({<location field> : "<index type>"} 

, которые могли бы помочь мне, если моя схема была:

var PlumberSchema = new Schema({ 
     firstname: { 
      type: String 
     }, 
     ... 
     address:{ type:String }, 
     location: { type:[Number], index: '2d'} 
     ... 
} 

Чтобы создать индекс в этом случае, я бы написал:

db.<collection>.createIndex({location:"2d"}) 

Но как вы можете видеть У меня есть вложенный объект . Как я мог это сделать?

ответ

0

Попробуйте это:

db.<collection>.createIndex({"office.location":"2d"}) 
+0

Пробовал. И это не сработает. Затем я пытаюсь выполнить запрос с помощью: db. .find ({office: {location: {$ рядом: [11.255814, 43.769560], $ maxDistance: 0.10}}}), но результаты не получены. –

+0

Этот запрос предназначен для индексов '2dsphere' (https://docs.mongodb.com/manual/core/2dsphere/) и' maxDistance' находится в метрах, поэтому вы запрашиваете 10 сантиметров, не уверены, должен ли он что-либо вернуть , –

Смежные вопросы