2017-07-15 10 views
-1

hint method on a MongoDB::Cursor objectを呼び出そうとしています。ただし、クエリを実行しようとすると例外がスローされます。以下のコードサンプルを参照してください。ランタイムエラー:MongoDB :: DatabaseError:悪いヒント

sub some_method_which_returns_cursor { 

    my $cursor = $collection->find($filter); 

    if ($hint) { 
    $cursor->hint({‘some_index’ => 1}); #failing here. 
    } 

    if ($sort) { 
    $cursor->sort($sort); 
    } 

    return $cursor; 
} 

何が起こっているのか、これをどのように修正できますか?

+0

これは実際のコードですか? '$ cursor-> hint({some_index => 1});' – stevieb

+0

プログラムで引用符として** '**と**' **を使用しないでください。あるいは、言い換えれば、ワープロを使ってプログラムを書かないでください。また、** 'If' **とは何ですか?文の後に定義されている**または**(つまり、** '//' **)は何ですか? –

+1

@Borodin 'ghd'は明らかに*' the' *を入力する私の方法です。 –

答えて

0

ハリッシュは、電子メールを介して私に尋ねた、私は後世のためにここに私の答えを繰り返します:

インデックス名、または配列参照与えられたキー/オーダーのペアが与えられたときhint方法は文字列を取ります:

$cursor->hint("some_index");    # by name 
$cursor->hint([field1 => 1, field2 => -1]); # by keys 

はまた、ハッシュリファレンスがかかりますが、シリアル化するとき、現代のPerlは、キーの順序をランダム化するので、ので、あなたのヒントは、インデックスが一致しない場合があることは使用しないでください。

+1

ところで、これはMongoDB perlドライバのバージョン0.45では動作しません。しかし、v1.8.0で動作します。 @xdg – Harish

関連する問題