다음 코드가 Perl Mojolicious 앱에서 실행되고 있습니다. 그것이 실행되는 콜렉션은 2 차원 인덱스가 [lat, long] 형식의 2 요소 배열 인 "loc"속성에 적용됩니다.perl mongodb 지형 공간 배열 삽입이 실패합니다.
MongoDB는 2.0.1, perl MongoDB는 0.46입니다. perl이 64bit
2d 색인을 삭제할 때 새 문서를 삽입/업로드하는 데 문제가 없습니다. 인덱스가 적용되면 last_error는 "위치 객체가 예상되고 위치 배열이 올바른 형식이 아닙니다"라고 반환합니다.
위도와 경도 입력을 여러 방법으로 조작 해 보았습니다. 여기에 코드가 있습니다 ... 어떤 아이디어입니까?
sub checkmein {
my $self = shift;
my $mail = $self->stash('mail');
my $lat = $self->param('lat');
my $lng = $self->param('long');
# upsert
my $c = $self->db->checkins;
$mail = lc $mail;
my $now = time;
my @loc = (Math::BigFloat->new($lng),Math::BigFloat->new($lat));
$c->update(
{'mail'=>$mail },
{ 'mail'=>$mail, 'when'=>$now, 'loc'=>\@loc },
{ upsert=>1 }
);
my $err = $self->db->last_error();
if (defined $err->{'err'}) {
$self->render(json=>{'status'=>'error','message'=>"Problem checking in $mail to $lat,$lng"});
} else {
$self->render(json=>{'status'=>'ok','message'=>"$mail checked in to $lat,$lng"});
}
}
'eval'의 코드를 컴파일 할 수 없습니다. MongoDB (및 MongoDB 드라이버)도 심각하게 오래되었지만 문제는 아닙니다. – friedo
예, 우리가 말하는대로 mongodb 업데이트를 계획합니다. sval에 대한 sory, 나쁜 상처와 붙여 넣기 ... 지금은 정확해야합니다 –