【问题标题】:Calling a stored procedure via PHP in MongoDB在 MongoDB 中通过 PHP 调用存储过程
【发布时间】:2012-03-15 09:04:10
【问题描述】:

尊敬的每一位可以提供帮助的人,

我有这个 PHP > MongoDB 问题,我想通过 PHP 调用一个存储过程(存储在 db.system.js 集合中)。

我没有参数,只有一个返回的 JSON 对象,如下所示:

{"archived":[the number of the archived messages]}

它在数据库服务器上的 shell 中运行良好,但是当我尝试通过 PHP 驱动程序调用它时,它并没有“说”任何东西......

我的代码如下所示:

$DB->execute(
    new MongoCode(
        "function () { return archiveMessages(); }"
    )
);

我也尝试过这样使用:

$DB->execute("archiveMessages()");

请帮忙,我被这个卡住了...我只想在更新集合后调用那个 sh*t...

提前谢谢你, 乙

【问题讨论】:

    标签: php mongodb stored-procedures mongodb-php


    【解决方案1】:

    您确定使用的是同一个数据库吗?尝试将其简化为一个基本示例,例如,

    $m = new Mongo();
    $db = $m->foo;
    
    $db->system->js->save(array("_id"=>"archiveMessages", 
       "value"=>new MongoCode("function() { return 3; }")));
    
    print_r($db->execute("archiveMessages()"));
    

    结果:

    Array
    (   
        [retval] => 3
        [ok] => 1
    )
    

    【讨论】:

    • 我使用的是同一个数据库,它是一个常数。就像几乎任何其他东西一样。这是我现在唯一不能做的事情。
    • 你能 print_r 你得到的结果吗? [retval] => 空?
    • 我收到“错误 500:内部服务器错误”。我的 PHP 驱动程序似乎工作正常,可以满足我的所有要求。
    • 这是来自您的应用服务器,而不是 MongoDB。你能写一个测试脚本并通过 PHP cli 运行它吗?
    【解决方案2】:

    查看文档:

    http://php.net/manual/en/mongodb.execute.php

    你是把execute()的返回值赋给一个变量吗?

    【讨论】:

    • 是的,我什至一直在检查返回值...我需要上面提到的那个数字来显示...
    猜你喜欢
    • 1970-01-01
    • 2011-03-13
    • 2021-09-24
    • 2013-11-23
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    相关资源
    最近更新 更多