рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рд╕рдВрднрд╛рд╡рд┐рдд рдмрдЧ
рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?
рднреВ-рд╕реНрдерд╛рдирд┐рдХ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕рд╣реЗрдЬ рдирд╣реАрдВ рд╕рдХрддреЗ
рдпрд╣рд╛рдВ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред
рдпрд╣ рдореЗрд░реА рд╕реНрдХреАрдорд╛ рд╣реИ:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var userSchema = new Schema({
email: {
type: String,
required: true,
unique: true
},
password: {type: String, required: true},
name: {type: String, required: true},
type: {type: Boolean, default: false, required: true},
geo: {
type: { type: String, enum: "Point", default: "Point" },
coordinates: { type: [ Number ], default: [ 0,0 ] }
}
});
userSchema.index({geo: '2dsphere'})
const User = mongoose.model('User', userSchema);
module.exports = User
рдореИрдВ рдПрдХ рдирдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ:
db.users.insert({email: '[email protected]', password: 'tebrwrw', name: 'teste', type: true, geo: { coordinates: [ 40, 5 ]} })
рдФрд░ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ:
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 16755,
"errmsg" : "Can't extract geo keys: { _id: ObjectId('5a31d79f369885e770a989b7'), email: \"[email protected]\", password: \"tebrwrw\", name: \"teste\", type: true, geo: { coordinates: [ 40.0, 5.0 ] } } unknown GeoJSON type: { coordinates: [ 40.0, 5.0 ] }"
}
})
рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ node.js, mongoose рдФрд░ MongoDB рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реЗрдВред
рдирд╡реАрдирддрдо
рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛рддреЗ рд╕рдордп рд╕рдВрджрд░реНрднрд┐рдд рдпреЛрдЧрджрд╛рди рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрддреЗ рд╣реБрдП:
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ Mongoose рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИ (рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдирд╣реАрдВ) рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдпрд╛ рддреЛ StackOverflow рдпрд╛ Gitter рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ
рдЖрдкрдХреЛ рдЙрди рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдкрд░ рдмрд╣реБрдд рдЬрд▓реНрджреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЙрди рдмрдЧреЛрдВ/рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмреИрдХрд▓реЙрдЧ рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреЛ рдпрд╣рд╛рдВ рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реВрдВ, рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж
// in the schma declaration
'loc': { type: { type: String, enum: "Point", default: "Point" }, coordinates: { type: [Number], default: [0,0] } }
// after schema declaration*
schema.index( { loc: "2dsphere" } );
// and then, how I create it
model.loc = { type: "Point", coordinates: [newarena.lng, newarena.lat] };
@Inateno рдзрдиреНрдпрд╡рд╛рдж ... рд╣реИ рдирд╛ !!
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реВрдВ, рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж