Подтвердить что ты не робот

Как хранить геопространственную информацию в mongoDB

В соответствии с документацией mongoDB (ссылка) если вы хотите сохранить геопространственную информацию в поле документа, у вас есть два варианта: массив или встроенный документ, а порядок должен быть всегда долготой, широтой.

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

Или должны ли поля во встроенном документе иметь определенное имя?

4b9b3361

Ответ 1

со встроенным документом, независимо от имени поля во встроенном документе, первое поле должно содержать значение долготы, а второе поле должно содержать значение широты. Например:

 db.zips2.insert( { _id: 1, city: "b", loc: { x: -73.974, y: 40.764 } } )
 db.zips2.insert( { _id: 2, city: "b", loc: { x: -73.981, y: 40.768 } } )

Здесь поле x будет долготой; и поле y будет широтой.

Привет

Ответ 2

2D-геопространственный индекс, данные о местонахождении магазина

"Все документы должны хранить данные о местоположении в том же порядке. Если вы используете широту и долготу в качестве вашей системы координат, всегда хранить долготу сначала. Операторы сферического индекса MongoDBs 2d распознают только [долгота, широта] упорядочение".

Здесь хороший пост о геопространственных запросах в MongoDB в случае необходимости.

Ответ 3

Я бы посоветовал вам назвать ваше поле: x and y вместо longitude / latitude, потому что после обновления долгота и широта будут переупорядочены по алфавиту, поэтому инвертированы.

Ответ 4

Эти индексы позволяют нам находить вещи, основанные на местоположении. У нас есть 2 варианта: 2D и 3D  В 2-D мы имеем декартовую плоскость с координатами x и y и связью разных объектов.

2D-декартовая плоскость

Документ должен хранить какое-то расположение x, y с помощью ensureIndex({'location':'2d', 'type':1}). Опция типа определяет направление индекса, то есть восходящего или нисходящего (и необязательно). Это может быть составной индекс. Для поиска ближайших местоположений используйте команду db.collectionName.find({location: {$near:[x,y]}}). И практически говоря, часто это используется через limit. Чтобы ограничить результаты до 20 append .limit(20).

Ответ 5

В документации MongoDB указано следующее:

Поле с координатами, определяющими координаты объектов. Если вы задаете координаты широты и долготы, перечислите долготу сначала и , затем широту:

Действительные значения долготы находятся между -180 и 180, оба включительно. Действительные значения широты находятся между -90 и 90 (оба включительно).

Официальная документация MongoDB: https://docs.mongodb.com/manual/geospatial-queries/#geospatial-indexes