Yan*_*nis 2 c# mongodb nosql mongodb-.net-driver
每个标题 - 我正在使用官方的mongodb驱动程序,我希望获得给定边界框内的所有POI.
到目前为止,我有:
MongoCollection<BsonDocument> collection = _MongoDatabase.GetCollection("pois");
BsonArray lowerLeftDoc = new BsonArray(new[] { lowerLeft.Lon, lowerLeft.Lat});
BsonArray upperRightDoc = new BsonArray(new[] { upperRight.Lon, upperRight.Lat});
BsonDocument locDoc = new BsonDocument
{
{ "$within", new BsonArray(new[] { lowerLeftDoc, upperRightDoc})}
};
BsonDocument queryDoc = new BsonDocument { { "loc", locDoc }};
IList<TrafficUpdate> updates = new List<TrafficUpdate>();
var results = collection.Find(new QueryDocument(queryDoc)).SetLimit(limit);
foreach (BsonDocument t in results)
{
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用.我明白了:
QueryFailure标志在类型中是未知$:0(响应是{"$ err":"未知$在类型中:0","代码":13058}).
您的代码中的问题是您没有指定要使用的地理操作.你只是指定$within但错过了where.您必须$within与$box(边界框)$polygon,$center或$centerSphere/ 一起指定$nearSphere.
这是运行$box查询的正确mongo语法
> box = [[40.73083, -73.99756], [40.741404, -73.988135]]
> db.places.find({"loc" : {"$within" : {"$box" : box}}})
Run Code Online (Sandbox Code Playgroud)
我不确定c#mongodb语法.但是,如果你包含'$ box',它将会起作用
| 归档时间: |
|
| 查看次数: |
1359 次 |
| 最近记录: |