db.adverts.find({coordinates:{$near:[20,40]}})
{ "_id" : ObjectId("4fddac51352de93903000000"), "title" : "dummy #3", "coordinates" : { "longitude" : 22, "latitude" : 31 } }
{ "_id" : ObjectId("4fddac48352de95105000000"), "title" : "dummy #3", "coordinates" : { "longitude" : 20, "latitude" : 30 } }
{ "_id" : ObjectId("4fddaca4352de93703000000"), "title" : "dummy #3", "coordinates" : { "longitude" : 31, "latitude" : 22 } }
{ "_id" : ObjectId("4fdda6a2352de90a03000000"), "title" : "dummy title", "created" : ISODate("2012-06-17T09:42:58Z"), "coordinates" : { "longitude" : 54.1234, "latitude" : -1.234 } }
{ "_id" : ObjectId("4fdda6d8352de9c004000000"), "title" : "dummy title #2", "created" : ISODate("2012-06-17T09:43:52Z"), "coordinates" : { "longitude" : 54.34, "latitude" : -1.124 } }
$adverts = $dm->createQueryBuilder('Advert')
->field('coordinates')->near(20, 40)
->getQuery()
->execute();
$adverts->count(); // => 0
Advert:
type: document
collection: adverts
fields:
id:
id: true
title:
type: string
content:
type: string
created:
type: date
updated:
type: date
status:
type: int
distance:
type: int
indexes:
coordinates:
keys:
coordinates: 2d
referenceOne:
owner:
targetDocument: User
embedOne:
coordinates:
targetDocument: Coordinates
Coordinates:
type: embeddedDocument
fields:
longitude:
type: float
latitude:
type: float
有没有想过为什么使用Dociety的ODM会在同一个查询上返回零结果?
更新#1看起来教义\MongoDB\Query\Builder::near()L363有问题。方法参数忽略第二个值($Y)。因此只传递要执行的第一个值。
near()
方法似乎存在一个实现问题(请参见https://github.com/stoculine/mongodb/pull/53)。要修复我的原始查询,我需要执行以下操作;
$adverts = $dm->createQueryBuilder('Advert')
->field('coordinates.latitude')->near(20)
->field('coordinates.longitude')->near(40);
$adverts->getQuery()->count(); // => 5
这与当前的文档相矛盾,该文档暗示x、y坐标都可以传递给Doctine\MongoDB\Query\Builder::near()。
编辑
public function near($longitude, $latitude)
{
$query = $this->createQueryBuilder()
->field('coordinates.longitude')->near((float) $longitude)
->field('coordinates.latitude')->near((float) $latitude)
->getQuery();
return $query;
}
我有一个包含许多文档集合,其结构如下: 纬度范围为[25;55] 该收藏包含大约60万条记录。 我设置了2D_Sphere索引:db.myCollection.createIndex({location:“2DSphere”}) 我获得了所有的记录,但我只期望有几个记录(靠近我的坐标!) 有什么建议吗?提前致谢
以上描述的作为基于装饰器的活动处理函数的替代,属于命名空间的活动处理函数可以被创造成一个类的方法。Flask_socketio.Namespace提供了一个基于类的方法来创造命名空间。 from flask_socketio import Namespace, emit class MyCustomNamespace(Namespace): def on_conect(): pas
问题内容: 我们正在寻找一种快速准确的方法来根据访问者的IP获取访问者的位置。 我们已经尝试过ipinfodb.com,但在调用API时,其API使我们的网站严重滞后。 您还建议其他哪些服务? 问题答案: 获取Geo-IP信息 请求地理IP服务器(netip.de)进行检查,并返回IP所在的位置(主机,州,国家/地区,城镇)。
我在PostGis中很新,我正在使用它来执行地理空间查询,但它在返回所需结果时似乎很慢。 在此之前,我使用了一个python脚本,该脚本通常在大约5秒钟内返回结果(搜索120万个元素)。 为了更快地得到这个结果,我将问题转移到postgis上,但是,正如我之前所写的,同样的工作需要20秒以上的时间。 更准确地说,每个元素由一个点(lat lon)和一个字符串(点的标签)组成 我正在使用一个停靠的p
我试图使用卡桑德拉文档中的地理空间示例:https://docs.datastax.com/en/dse/6.7/cql/cql/cql_using/search_index/queriesGeoSpatial.html 我收到错误: 我正在使用堆栈:[cqlsh 5.0.1|Cassandra 3.11.1|CQL规范3.4.4|本机协议v4] 如何解决?
在DynamoDB中,我有一个表,其中每条记录都有两个日期属性,