Arquivos de sites

MongoDB – Erro: Can’t extract geo keys

E ai galera, estou me aventurando no mundo NoSQL com o sr. MongoDB

E ao criar meu primeiro índice para fazer pesquisas por proximidade, tomei meu primeiro erro, e tive que ir atrás para resolve-lo 😦

Oque aconteceu, peguei latitudes e longitudades pelo google maps, lá pros lados da austrália…
type: "Point", coordinates: [ -33.91991, 151.257018 ]
adicionei ao meu documento e tentei gerar o índice e tomei o erro abaixo:

db.xxx.createIndex({ xxx : "2dsphere"})

“ok” : 0,
“errmsg” : “Can’t extract geo keys… longitude/latitude is out of bounds, lng: … lat: …”,
“code” : 16755,
“codeName” : “Location16755”

Dando uma pesquisada, descobri é que o google maps disponibiliza os valores na ordem diferente (latitude/longitude) da qual o MongoDB espera (longitude/latitude)… para resolver o problema apenas precisei inverter os valores inseridos e o índice foi criado sem problemas 😀

Os valores da Longitude deve estar entre -180° e +180° e a Latitude entre -90° e 90°!!! (Y)

Espero que tenha ajudado!

Fonte: go-oleg / Paul T. Rawkeen – Stackoverflow.com

Anúncios

JPQL – Como criar query de DELETE com JOIN

E ai galera beleza?
Estou em um novo projeto muito legal, e me deparei com um problema, eu precisava fazer uma query para deletar uns dados no banco, só que pra selecionar exatamente oque eu precisava excluir era necessário utilizar joins, porém ao montar uma query parecida com essa:

delete from Queue q
where q.enabledMember = :enabledMember
and q.letter.eventReason.event.type = :eventType
and q.letter.eventReason.reason = :reason

Tomei o seguinte erro:

The entity abstract schema type declaration is malformed

Pesquisei um pouco na net e achei a seguinte solução, deletar a partir de um subselect, a query ficou assim:

delete from Queue q
where q in (select sq from Queue sq
where sq.enabledMember = :enabledMember
and sq.letter.eventReason.event.type = :eventType
and sq.letter.eventReason.reason = :reason )

Bom, é isso ai galera, espero que tenha ajudado 😀

Abraços!

Fonte: Jake Trent – JakeTrent.com