2016-05-24 2 views
1

Ich habe diese Daten aus einem Excel-Dokument importiert.Fehler beim Erstellen eines Geospatial-Index für die Daten nach dem Importieren von Daten aus einem Excel-Dokument

{ 
    "_id" : ObjectId("57440d63a458f726a8f95bfe"), 
    "state" : "WEST BENGAL", 
    "bank" : "STATE BANK OF INDIA", 
    "ifsc" : "SBIN0000001", 
    "micr code" : "700002021", 
    "branch" : "KOLKATA MAIN", 
    "address" : "SAMRIDDHI BHAWAN, 1 STRAND ROAD, KOLKATA 700 001", 
    "latlong" : "22.569435,88.342932", 
    "latitude" : "22.569435", 
    "longitude" : "88.342932", 
    "city" : "KOLKATA", 
    "district" : "KOLKATA", 
    "loc" : [ 
      "88.34", 
      "22.57" 
     ] 
} 

Dies ist mein Beispieldokument. Ich kann keinen geografischen Index für loc erstellen. Wie erstelle ich?

+0

Wie versuchen Sie Index zu erstellen? – Astro

+0

db.sbi.ensureIndex ({loc: "2d"}) – Coded9

+0

sieht so aus, als hätte das Loc-Feld kein gültiges Format. Die Werte des Arrays können entweder Arrays wie in [55.5, 42.3] oder eingebettete Dokumente sein, wie in {lng: 55.5, lat: 42.3}. – Astro

Antwort

0

Werte von Arrays müssen in einem speziellen Format vorliegen, um einen 2D-Index zu erstellen.

Geospatial Indexes

Die Werte des Arrays können entweder Arrays sein, wie in [55.5, 42.3] oder Dokumente eingebettet, wie es in {lng: 55,5, Breite: 42,3}.

Ich könnte 2D-Index auf folgenden Dokument erstellen. Ich denke, dass Sie Excel Import-Prozess erneut besuchen müssen.

{ 
    "_id" : ObjectId("57440d63a458f726a8f95bfe"), 
    "state" : "WEST BENGAL", 
    "bank" : "STATE BANK OF INDIA", 
    "ifsc" : "SBIN0000001", 
    "micr code" : "700002021", 
    "branch" : "KOLKATA MAIN", 
    "address" : "SAMRIDDHI BHAWAN, 1 STRAND ROAD, KOLKATA 700 001", 
    "latlong" : "22.569435,88.342932", 
    "latitude" : "22.569435", 
    "longitude" : "88.342932", 
    "city" : "KOLKATA", 
    "district" : "KOLKATA", 
    "loc" : [ 
      88.34, 
      22.57 
     ] 
} 
+0

Wie konvertiert man diesen Teil in Float-Werte? "loc": [ "88.34", "22.57" ] '' 'db.sbi.find(). forEach (funktion (doc) {doc.loc = [parseFloat (doc.longitude) .toFixed (2) , parseFloat (doc.latitude) .toFixed (2)]; db.sbi.save (doc);}); '' 'Ich habe das versucht – Coded9

+0

' '' db.sbi.find(). forEach (function (doc) { db.sbi.update ( {_id: doc._id}, {$ gesetzt: { "loc": [parseFloat (doc.longitude), parseFloat (doc.latitude)]}} ) \t \t}) '' 'Fertig! Danke – Coded9

+0

Großartig. Danke, dass du es geteilt hast. – Sandesh

Verwandte Themen