perl Mojolicious アプリで次のコードを実行しています。それが実行されるコレクションには、フォーム [lat, long] の 2 つの要素配列である「loc」プロパティに適用される 2d インデックスがあります。
MongoDB は 2.0.1、perl MongoDB は 0.46 です。パールは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"});
}
}