Wie man ein Objekt in einem Array im Mongoose-Schema korrekt mit dem 2D-Geo-Index definiert
Bin ich derzeit Probleme bei der Erstellung einer schema für das Dokument unten. Die Antwort vom server immer wieder die "trk" - Feld Werte [Objekt]. Irgendwie habe ich keine Idee, wie das funktionieren sollte, wie ich versucht wenigstens alle Ansätze, die Sinn für mich 😉
Falls das hilft, mein Mongoose version 3.6.20 und MongoDB 2.4.7
Und bevor ich es vergesse, es wäre schön, auch Sie als Index (2d)
Ursprüngliche Daten:
{
"_id": ObjectId("51ec4ac3eb7f7c701b000000"),
"gpx": {
"metadata": {
"desc": "Nürburgring VLN-Variante",
"country": "de",
"isActive": true
},
"trk": [
{
"lat": 50.3299594,
"lng": 6.9393006
},
{
"lat": 50.3295046,
"lng": 6.9390688
},
{
"lat": 50.3293714,
"lng": 6.9389939
},
{
"lat": 50.3293284,
"lng": 6.9389634
}]
}
}
Mungo Schema:
var TrackSchema = Schema({
_id: Schema.ObjectId,
gpx: {
metadata: {
desc: String,
country: String,
isActive: Boolean
},
trk: [{lat:Number, lng:Number}]
}
}, { collection: "tracks" });
Die Antwort aus dem Netzwerk-tab in Chrome, sieht immer aus wie diese (das ist nur der trk-Teil ist falsch) :
{ trk:
[ [Object],
[Object],
[Object],
[Object],
[Object],
[Object],
Ich bereits versucht, verschiedene Schema-Definitionen für die Begriffe "trk":
- trk: Schema.Typen.Gemischter
- trk: [Schema.Typen.Mixed]
- trk:[ { type:[Number], index: "2d" }]
Hoffe Ihr könnt mir helfen 😉
InformationsquelleAutor der Frage niels_h | 2013-10-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie erklären, trk, indem Sie die folgenden Möglichkeiten : -
entweder
oder
trk : { type : Array , "default" : [] }
Im zweiten Fall während der insertion das Objekt und schieben Sie es in das array wie
oder Sie können den Array-Objekt durch
InformationsquelleAutor der Antwort Kundu
Ich hatte ein ähnliches Problem mit Mungo :
In der Tat, ich war mit "Typ" als name einer Eigenschaft, die in mein schema :
Zu vermeiden, dass Verhalten, müssen Sie den parameter ändern :
InformationsquelleAutor der Antwort Pierre Maoui
Danke für die Antworten.
Habe ich versucht, den ersten Ansatz, aber nichts änderte sich. Dann habe ich versucht, die Ergebnisse protokollieren. Ich habe gerade aufgerissen level um level, bis ich endlich, wo die Daten gerade angezeigt wurde.
Nach einer Weile habe ich das problem gefunden: Wenn ich das senden war die Antwort, ich war die Konvertierung in ein string über
.toString()
.Ich behoben, und jetzt funktioniert es hervorragend. Sorry für den falschen alarm.
InformationsquelleAutor der Antwort niels_h