我在 perl Mojolicious 应用程序中运行以下代码。它运行的集合具有应用于“loc”属性的二维索引,该属性是 [lat, long] 形式的 2 元素数组。
MongoDB 是 2.0.1,perl MongoDB 是 0.46。perl 是 64 位的
删除 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"});
}
}