- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在处理地理位置查询,我想获得满足地理位置查询的集合总数。 Mongo go 库提供 Document Count 方法,不支持基于地理位置的过滤。
我得到的错误是:(BadValue) 在此上下文中不允许使用 $geoNear、$near 和 $nearSphere
filter := bson.D{
{
Key: "address.location",
Value: bson.D{
{
Key: "$nearSphere",
Value: bson.D{
{
Key: "$geometry",
Value: bson.D{
{
Key: "type",
Value: "Point",
},
{
Key: "coordinates",
Value: bson.A{query.Longitude, query.Latitude},
},
},
},
{
Key: "$maxDistance",
Value: maxDistance,
},
},
},
},
},
}
collection := db.Database("catalog").Collection("restaurant")
totalCount, findError := collection.CountDocuments(ctx, filter)
最佳答案
(BadValue) $geoNear, $near, and $nearSphere are not allowed in this context
由于 db.collection.countDocuments() 的使用受限,您会收到此消息.
countDocuments()
方法本质上包装了聚合管道 $match
和 $group
。参见 The Mechanics of countDocuments()想要查询更多的信息。有许多查询运算符受到限制:Query Restrictions , 其中之一是 $nearSphere运算符(operator)。
另一种方法是使用 [$geoWithin] 和 $centerSphere :
filter := bson.D{
{ Key: "address.location",
Value: bson.D{
{ Key: "$geoWithin",
Value: bson.D{
{ Key: "$centerSphere",
Value: bson.A{
bson.A{ query.Longitude, query.Latitude } ,
maxDistance},
},
},
},
},
}}
请注意,球面几何中的 maxDistance
必须在半径内。您需要转换距离,例如 10/6378.1
表示 10 公里,请参阅 Calculate Distance using Spherical Geometry获取更多信息。
还值得一提的是,虽然$centerSphere 在没有地理空间索引的情况下工作,地理空间索引支持比未索引的等效项快得多的查询。
关于mongodb - Mongo go 驱动的 DocumentCount 不支持 $nearSphere,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57874683/
我正在处理地理位置查询,我想获得满足地理位置查询的集合总数。 Mongo go 库提供 Document Count 方法,不支持基于地理位置的过滤。 我得到的错误是:(BadValue) 在此上下文
我是一名优秀的程序员,十分优秀!