我已经开始在我的一个PHP项目中使用MongoDB。在数据库中,我尝试使用MongoDB分片概念。我得到了下面的链接并尝试了,
它工作得很好。但问题是,在上面的示例中,所有操作都是在命令提示符下完成的。但是我正在尝试用PHP做所有的事情。我无法在PHP中获得任何示例。
到目前为止,我已经从这些代码开始,
$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分片?
发布于 2013-06-24 22:37:46
MongoDB的数据库命令区分大小写。您传递的是小写的命令名,而实际的命令是camelCased (请参阅:sharding commands)。此外,shardCollection的key参数需要是一个对象。
上面代码的更正版本如下所示:
$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源代码。例如:
> 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()函数需要做什么,这将是一个有用的提示。
https://stackoverflow.com/questions/17135292
复制相似问题