0

我是 MongoDB 和 Mongoose 的新手。我正在尝试创建一个索引位置字段的用户模型。

const userSchema = new mongoose.Schema({
    /*...*/
    location: {
        type: { type: String },
        coordinates: [Number],
    },
    /*...*/
});

userSchema.index({ location: "2dsphere" });

架构定义后,我尝试添加 100 个具有相同 lat、lng 的用户。现在,当我执行$geoNear它时,我会说错误'no geo indices for geoNear'。因此,我使用MongoDB Compass. 然后,当我尝试以下查询时,

  User.aggregate([
    {
        $geoNear: {
            near: {
                type: "Point",
                coordinates: [lat, lng]
            },
            distanceField: "dist.calculated",
            maxDistance: 2,
            spherical: true
        }
    }]);

在我创建的 100 条记录中,我只收到了几条记录。我无法理解为什么所有记录都没有出现,即使 lat 和 lng 相同。

我的问题如下

  1. 为什么userSchema.index({ location: "2dsphere" });不首先创建索引?
  2. 为什么即使所有 lat 和 lng 都相同,我也只收到很少的记录?
4

0 回答 0