sql >> Database >  >> NoSQL >> MongoDB

Meteor eenvoudig schema voor mongo geo-locatiegegevens

Hmm ik weet niet precies de oplossing voor je proces van het opslaan van geocoorden. Maar als je lng en lat wilt opslaan, moet je een prefix doorgeven. Waarom? Nou, geocoorden hebben verschillende validatiebereiken. Breedtegraad is alleen beschikbaar van -90 tot 90 en lengtegraad van -180 tot 180. Als u geen voorvoegsel opslaat, hoe wilt u dan zeker weten welke coördinaat is? Een andere hint die ik ooit fout heb gedaan, is om de coördinaten op te slaan in de volgorde van lengte- en breedtegraad.

Het schema dat ik gebruik ziet er als volgt uit:

GeocoordsSchema = new SimpleSchema({
  lng: {
    type : Number,
    decimal: true,
    min: -180,
    max: 180
  }, 
  lat: {
    type : Number,
    decimal: true,
    min: -90,
    max: 90
  }
});

Nu maakt u geneste schema's. Breid GeocoordsSchema gewoon uit met LocationSchema en voeg een attribuut toe.

LocationSchema = new SimpleSchema({
  type : {
    type : String,
    autoValue: function() {
      return "Point";
    }
  },
  coordinate: {
    type: GeocoordsSchema 
  }
});

Als u een array van LocationSchema wilt hebben, kunt u het schema tussen [] haakjes plaatsen.

BeachesSchema = new SimpleSchema({
  loc: {
    type: [LocationSchema]
  }
});

Ik heb niet getest, maar dat is de manier waarop ik verschillende schema's maak en nest. Welnu, deze oplossing heeft een identificatie van lat en lng nodig. Waarom wil je geen prefix voor je gegevens?



  1. Voorwaardelijke $ som in MongoDB

  2. MongoDB $isoWeek

  3. HBase-prestaties CDH5 (HBase1) versus CDH6 (HBase2)

  4. Hoe een verzameling te coderen met regex en complexe criteria met behulp van het Java MongoDB-stuurprogramma?