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
请知道原因的朋友解释一下
谢谢。
我正在尝试从我的 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
请知道原因的朋友解释一下
谢谢。