我是 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 相同。
我的问题如下
- 为什么
userSchema.index({ location: "2dsphere" });
不首先创建索引? - 为什么即使所有 lat 和 lng 都相同,我也只收到很少的记录?