如何用猫鼬添加GeoJson数据?

问题描述

我正在发送对象以创建用户模型。

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],};