Получить и очистить массив обратно при попытке использования $ near в mongoose - PullRequest
0 голосов
/ 21 сентября 2019

Он должен найти все из коллекции Business, где местоположение находится на максимальном расстоянии 1000 м от входа, используя функцию $ near в mongoose.Я не использую это правильным способом.Возможно, я неправильно реализую функцию $ near.

mongoose.connect(db, { useNewUrlParser: true }, (err) => { if (err) { throw err } console.log('mongoose connected') });


 username: "Pinelope",
 location: {
     type : "Point"
     coordinates: {
         0 : -90.34555
         1 : 10.475
            }
         } 
Schema 

const NewBusiness = new Schema({
  BusinessName: {
    type: String,
    required: true,
    unique: false
  },
  //[longitude , latitude]
  location: {
    type: {
      type: String, // Don't do `{ location: { type: String } }`
      enum: ['Point'], // 'location.type' must be 'Point'
      default : 'Point'
    },
    coordinates: {
      type: [Number],
      required: true
    }

  }
});

NewBusiness.index({
  location : "2dsphere"
})

const Business = mongoose.model("Businesses", NewBusiness);


Database Query

Business.find({
            location: {
                near: {
                    $maxDistance: 1000,
                    $geometry: {
                        type: "Point",
                        coordinates: [36.09894, -112.110491]
                    }
                }
            }
        }).find((err, results) => {
            if (err) { console.log(err) }
            console.log(JSON.stringify(results))
            res.json(results)

        }).catch((err) => {
            console.log(err)
        });

1 Ответ

1 голос
/ 21 сентября 2019

Не уверен, если это является причиной проблемы, но координаты $geometry должны быть долготой, а затем широтой (https://docs.mongodb.com/manual/reference/operator/query/near/). Поскольку ваша вторая координата равна -112.110491, это говорит о том, что это долгота. Попробуйте перевернутьте.

...