MongoDB 和 .netCore 查找最近的位置(无法找到 $geoNear 查询的索引)

MongoDB and .netCore Find nearest locations (unable to find index for $geoNear query)

我正在尝试从我的 MongoDB 数据库中找到最近的其他位置。

我正在使用 .net Core 作为休息 API。

.net 核心 5.0

这是我的 MDB Class

public class MdbTrip
{
        [BsonId]
        [BsonRepresentation(MongoDB.Bson.BsonType.ObjectId)]
        public string id { get; set; }

        public GeoJsonPoint<GeoJson2DGeographicCoordinates> location { get; set; }

}

这是我喜欢的查询方式(查找200m以内最近的其他位置)。

 var point = GeoJson.Point(GeoJson.Geographic(myLocation.lng, myLocation.lat));
 var locationQuery = new FilterDefinitionBuilder<MdbTrip>().Near(tag => tag.location, point, 200);
 var c = _trips.Find(locationQuery).ToList();

_trips 被注入了一个接口,它代表 IMongoCollection。

我的对象正在完美地保存在数据库中(数据库连接正常)。

但是当我尝试寻找附近的其他位置时出现此错误。

MongoDB.Driver.MongoCommandException: 'Command find failed: error processing query: ns=VtrackDB.MdbTripTree: GEONEAR  field=location maxdist=200 isNearSphere=0
Sort: {}
Proj: {}
 planner returned error :: caused by :: unable to find index for $geoNear query.'

在这一行

var c = _trips.Find(locationQuery).ToList();

我对 .net core 有点陌生,MongoDB。

让我知道如何解决这个问题(我在哪里转错了)。

_trips.Indexes.CreateManyAsync(
    new[]
    {
        new CreateIndexModel<MdbTrip>(Builders<MdbTrip>.IndexKeys.Geo2DSphere(it => it.location))
    }
);

这解决了我的问题。

我放在这之前了

var point = GeoJson.Point(GeoJson.Geographic(myLocation.lng, myLocation.lat));

我找到了解决方案 -> MongoDb C# GeoNear Query Construction

请知道原因的朋友解释一下

谢谢。