MongoDB Extension for Yii 2
This extension provides the MongoDB integration for the Yii framework 2.0.
For license information check the LICENSE-file.
Documentation is at docs/guide/README.md.
Installation ¶
This extension requires MongoDB PHP Extension version 1.0.0 or higher.
This extension requires MongoDB server version 3.0 or higher.
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist yiisoft/yii2-mongodb
or add
"yiisoft/yii2-mongodb": "~3.0.0"
to the require
section of your composer.json
.
Configuration ¶
To use this extension, simply add the following code in your application configuration:
return [
//....
'components' => [
'mongodb' => [
'class' => '\yii\mongodb\Connection',
'dsn' => 'mongodb://localhost:27017/mydatabase',
'options' => [
"username" => "Username",
"password" => "Password"
]
],
],
];
How can I define a connection string of replicaset. I am using below but I a always getting an error like
“name”: “MongoDB Exception”, “message”: “not master”, “code”: 10107, “type”: “yii\mongodb\Exception
my connection is as below
‘components’ => [
‘mongodb’ => [ ‘class’ => ‘\yii\mongodb\Connection’, ‘dsn’ => ‘mongodb://xxa:27017,xxb:27017,xxc:27017/?replicaSet=p&connectTimeoutMS=480000&socketTimeoutMS=520000&readPreference=secondary’, ],
]
不支持 MongoDB 事务
/** * 开始事务 * @return \MongoDB\Driver\Session * @throws Exception */ public static function startTransaction() { if (is_null(static::getDb()->getDatabase()->connection->manager)) { static::getDb()->getDatabase()->connection->open(); if (is_null(static::getDb()->getDatabase()->connection->manager)) { throw new Exception('Please Connect Mongo'); } } $session = static::getDb()->getDatabase()->connection->manager->startSession(); $session->startTransaction([ 'readConcern' => new \MongoDB\Driver\ReadConcern("snapshot"), 'writeConcern' => new \MongoDB\Driver\WriteConcern(\MongoDB\Driver\WriteConcern::MAJORITY), ]); return $session; }
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.