MongoDB在锂中运行命令

时间:2013-09-24 02:10:40

标签: php mongodb mongodb-php lithium

我正在尝试对使用Lithium存储在mongoDb中的某些数据进行全文搜索。

以下是我在控制器中尝试的方法:

$mongodb = Connections::get('default')->connection;
$results = Page::connection()->connection->command(array("text" => "Page", 'search' => "term" ));

我也试过了:

$results = Page::connection()->connection->command(array("text" => "Page", 'search' => "term" ));

但是,这两个都返回:致命错误:在非对象上调用成员函数command()

我做错了什么?

编辑:

我应该补充一点,关于Page的简单查询工作得很好。例如:

$results = Page::find('all');

返回一个数组,其中包含页面集合中的所有文档,就像我期望的那样。

更新2:

我从WAMP服务器上运行了所有这些。我今天尝试从Linux服务器运行它,但仍然得到了同样的错误。我真的很难过这个并且可以使用一些帮助。有人有什么想法吗?

这是现在的Page模型:

<?php
namespace app\models;

use lithium\data\Connections; //added during debugging
use lithium\data\source\MongoDb; //added during debuging

class Page extends \lithium\data\Model {

}
?>

这是我的联系:

 Connections::add('default', array(
        'type' => 'MongoDb',
        'host' => '192.168.48.128',
        'database' => 'my_collection'
 ));

2 个答案:

答案 0 :(得分:2)

我这样做:

$plugins = Plugins::connection()->connection->command([
    'text' => 'plugins',
     'search' => $this->request->query['q']
]);
return compact('plugins');

所以我建议您检查一下您的配置 - 您的模型是否正常返回其他数据?连接配置是否正确?

答案 1 :(得分:0)

帮助弄清楚...发布在这里供其他人参考。

调用它的正确方法是:

$conn = Model::connection();
$db = $conn->selectDB('db');
$result = $db->command(array(...

这样做时效果很好。