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.
Requirements ¶
This extension requires MongoDB PHP Extension version 1.20.1 or higher.
This extension requires MongoDB server version 4.0 or higher.
Installation ¶
[!IMPORTANT]
- The minimum required PHP version is PHP
7.4.- It works best with PHP
8.
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"
]
],
],
];
Known issues ¶
- yii\mongodb\Exception: no such command: 'group' with MongoDB server version 4.2 or higher.
Starting in version 4.2, MongoDB removes the group command (deprecated since version 3.4) and its mongo shell helper db.collection.group().


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.