运行时错误:MongoDB :: DatabaseError:坏提示

问题描述:

我想拨打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

不要在程序中使用**'**和**'**作为引号。或者,换句话说,不要使用文字处理器编写程序。另外,什么是**如果**?!什么是**定义 - 或**(即,**'//'**)在语句后执行? –

+1

@Borodin'ghd'显然是我输入*'the' *的方式。 –

哈里什问我通过电子邮件和我会在这里重复我的答案留给后人:给定一个索引名称,或数组引用给予时按键/为了对时

hint方法接受一个字符串

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

它也需要一个散列引用,但不要使用,因为现代皮尔斯序列化时随机键顺序,所以你的提示可能不匹配的索引。

+1

顺便说一句,这不适用于MongoDB perl驱动程序版本0.45。虽然工作在v1.8.0。 @xdg – Harish