簡體   English   中英

在MongoDB中存儲的Javascript

[英]Stored Javascript in MongoDB

我正在嘗試使用存儲的JavaScript在MongoDB中存儲查詢。

現在看起來像這樣:

$collection = $db->$app_id;

$query = $collection->find( $filterQuery );

$db->system->js->save(array(
    "_id" => "qo8qu0",
    "value" => new MongoCode("function() { return array($query) }")
));

然后我執行它:

echo "<pre>";
print_r($test = $db->execute("qo8qu0()"));
echo "</pre>";

但是,我收到此錯誤: Catchable fatal error: Object of class MongoCursor could not be converted to string in /var/www/dev/classes/EmailMessaging.php on line 91

第91行是此行(如上), "value" => new MongoCode("function() { return array($filterQuery) }")

如果我使用count( $filterQuery ); 而不是find( $filterQuery ); 它可以正常工作並返回正確的號碼。

我如何使其工作,以便在使用find時返回數組?

謝謝

這是因為您對代碼進行了評估。 它正在對此進行評估:

$query = $collection->find( $filterQuery );

因此, $query是一個MongoCursor ,然后您嘗試將該類連接成一個字符串:

new MongoCode("function() { return array($query) }")

您需要像這樣做所有事情:

return $this->execute('function(){ return db.collection.find(filter); }',  array('filter'=>array('_id'=>1)));

count之所以有效是因為它返回一個可以添加到字符串中的int

編輯

方式:

$db->system->js->save(array(
    "_id" => "qo8qu0",
    "value" => new MongoCode("function() { return db.collection.find(filter).toArray() }")
));

然后在您的應用中:

$test = $db->execute("qo8qu0()", array('filter'=>array('_id'=>1)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM