首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无论如何,在PHP中做MongoDB分片?

无论如何,在PHP中做MongoDB分片?
EN

Stack Overflow用户
提问于 2013-06-17 00:17:49
回答 1查看 1.2K关注 0票数 0

我已经开始在我的一个PHP项目中使用MongoDB。在数据库中,我尝试使用MongoDB分片概念。我得到了下面的链接并尝试了,

MongoDB Sharding Example

它工作得很好。但问题是,在上面的示例中,所有操作都是在命令提示符下完成的。但是我正在尝试用PHP做所有的事情。我无法在PHP中获得任何示例。

到目前为止,我已经从这些代码开始,

代码语言:javascript
复制
    $connection =   new Mongo();
    $db     =   $connection->selectDB('TestDB');
    $db     =   $connection->TestDB;

    $connection->selectDB('admin')->command(array('addshard'=>'host:port'));
    $connection->selectDB('admin')->command(array('enablesharding'=>'TestDB'));
    $connection->selectDB('admin')->command(array('shardcollection'=>'TestDB.large', 'key' => '_id'));

它不起作用。另外,我不知道如何在PHP中设置分片服务器和配置数据库。

在PHP中有没有其他方法来做MongoDB分片?

EN

回答 1

Stack Overflow用户

发布于 2013-06-24 22:37:46

MongoDB的数据库命令区分大小写。您传递的是小写的命令名,而实际的命令是camelCased (请参阅:sharding commands)。此外,shardCollectionkey参数需要是一个对象。

上面代码的更正版本如下所示:

代码语言:javascript
复制
$connection->selectDB('admin')->command(array('addShard'=>'host:port'));
$connection->selectDB('admin')->command(array('enableSharding'=>'TestDB'));
$connection->selectDB('admin')->command(array('shardCollection'=>'TestDB.large', 'key' => array('_id' => 1)));

此外,您应该能够检查的命令结果,以确定此命令不起作用的原因。ok字段将为零,并且errmsg字段将解释错误(例如,“没有这样的cmd: addshard")。

最后,如果您试图在PHP中模仿shell的功能来配置分片,您可能会意识到一些shell methods不仅仅是数据库命令。对于这些方法中的任何一个,您都可以通过省略括号来获得JS源代码。例如:

代码语言:javascript
复制
> sh.addTagRange
function ( ns, min, max, tag ) {
    var config = db.getSisterDB( "config" );
    config.tags.update( {_id: { ns : ns , min : min } } ,
            {_id: { ns : ns , min : min }, ns : ns , min : min , max : max , tag : tag } ,
            true );
    sh._checkLastError( config );
}

对于PHP中的addTagRange()函数需要做什么,这将是一个有用的提示。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17135292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档