Search code examples
phpmongodbphp-mongodblithium

MongoDB running command in lithium


I'm trying to run a full text search against some data that is stored in mongoDb using Lithium.

Here is how I am trying to do it in my controller:

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

I've also tried:

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

However, both of these return: Fatal error: Call to a member function command() on a non-object

What am I doing wrong?

EDIT:

I should add that a simple query on Page is working just fine. For instance:

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

Does return an array with all of the documents in the pages collection like I would expect it to.

UPDATE 2:

I was running all of this from WAMP server. I tried today running it from a linux server, but still got the same exact error. I am really stumped by this and could use some help. Anyone have any ideas?

here is the Page model as it sits now:

<?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 {

}
?>

Here is my connection:

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

Solution

  • Got help to figure it out... posting here for others to reference.

    proper way of calling it is:

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

    Works perfectly when done this way.