问题描述
我正在发送对象以创建用户模型。
x = [1,3,2,3];
y = [2,4,1,3];
S = [1,5; 1,0.001; 12,21,5];
linear_ind = x + (y-1)*size(S,1);
logical_ind = S(linear_ind)>0.1;
x_new = x(logical_ind);
y_new = y(logical_ind);
这是我创建的猫鼬模式。
"{
type: 'Point',coordinates: [ 25.2239771,51.4993224 ]
}"
这是我用来添加geoJson类型文件的代码。但是,我得到一个错误。 在定义模式后,我还尝试添加索引
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const UserProfileSchema = new Schema(
{
userId: {
type: String,// required: true,unique: true,},userFirstName: {
type: String,userLastName: {
type: String,userGender: {
type: String,userCoordinates: {
type: {
type: String,default: 'Point',coordinates: {
type: [Number],index: '2dsphere',{ collection: 'userprofilemodels' }
);
module.exports = UserProfile = mongoose.model(
'userprofilemodels',UserProfileSchema
);
如果我排除userCoordinates,则可以。因此,def我的geoJson对象是错误的。但是,我不知道哪里犯了错误。
解决方法
从猫鼬documentation看来,GeoJSON类型一定不能只是一个字符串。
以下是location
作为GeoJSON类型的示例:
const citySchema = new mongoose.Schema({
name: String,location: {
type: {
type: String,// Don't do `{ location: { type: String } }`
enum: ['Point'],// 'location.type' must be 'Point'
required: true
},coordinates: {
type: [Number],required: true
}
}
});
,
猫鼬支持GeoJSON对象索引,因此首先要在userCoordintes中添加“ 2dsphere”索引,而不是在对象内部的坐标中添加索引,以使其正常工作。
userCoordinates: {
type: {
type: String,default: 'Point',},coordinates: {
type: [Number],default: undefined,required: true
},index: '2dsphere'
},
确保您的userCoordinates看起来像这样:
const userCoordinates = {
type: "Point",coordinates: [coordinatesA,coordinatesB],};