php mongobulk,PHP: MongoDB\Driver\BulkWrite - Manual

Примеры

Пример #1 Смешанные операции группируются по типу

Смешанные операции записи (т.е. добавления, обновления или удаления) будут

собраны в типизированные команды записи, которые

в последовательном порядке будут отправлены на сервер.

$bulk= newMongoDB\Driver\BulkWrite(['ordered'=>true]);$bulk->insert(['_id'=>1,'x'=>1]);$bulk->insert(['_id'=>2,'x'=>2]);$bulk->update(['x'=>2], ['$set'=> ['x'=>1]]);$bulk->insert(['_id'=>3,'x'=>3]);$bulk->delete(['x'=>1]);?>

В результате будут выполнены четыре команды записи (т.е. обращений). Поскольку

операции отсортированы, третья вставка не может быть отправлена до тех пор, пока

не будет выполнено предыдущее обновление.

Пример #2 Отсортированные операции записи, вызывающие ошибку

$bulk= newMongoDB\Driver\BulkWrite(['ordered'=>true]);$bulk->delete([]);$bulk->insert(['_id'=>1]);$bulk->insert(['_id'=>2]);$bulk->insert(['_id'=>3,'hello'=>'world']);$bulk->update(['_id'=>3], ['$set'=> ['hello'=>'earth']]);$bulk->insert(['_id'=>4,'hello'=>'pluto']);$bulk->update(['_id'=>4], ['$set'=> ['hello'=>'moon']]);$bulk->insert(['_id'=>3]);$bulk->insert(['_id'=>4]);$bulk->insert(['_id'=>5]);$manager= newMongoDB\Driver\Manager('mongodb://localhost:27017');$writeConcern= newMongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY,1000);

try {$result=$manager->executeBulkWrite('db.collection',$bulk,$writeConcern);

} catch (MongoDB\Driver\Exception\BulkWriteException $e) {$result=$e->getWriteResult();// Убедиться, что гарантия записи не может быть выполненаif ($writeConcernError=$result->getWriteConcernError()) {printf("%s (%d): %s\n",$writeConcernError->getMessage(),$writeConcernError->getCode(),var_export($writeConcernError->getInfo(),true)

);

}// Проверить, не выполнялись ли какие-либо операции записиforeach ($result->getWriteErrors() as$writeError) {printf("Operation#%d: %s (%d)\n",$writeError->getIndex(),$writeError->getMessage(),$writeError->getCode()

);

}

} catch (MongoDB\Driver\Exception\Exception $e) {printf("Другая ошибка: %s\n",$e->getMessage());

exit;

}printf("Добавлено %d документ(ов)\n",$result->getInsertedCount());printf("Обновлено %d документ(ов)\n",$result->getModifiedCount());?>

Результат выполнения данного примера:

Operation#7: E11000 duplicate key error index: db.collection.$_id_ dup key: { : 3 } (11000)

Добавлено 4 документ(ов)

Обновлено 2 документ(ов)

Если гарантия записи не может быть выполнена, результат вышеприведённого примера будет

что-то вроде этого:

waiting for replication timed out (64): array (

'wtimeout' => true,

)

Operation#7: E11000 duplicate key error index: databaseName.collectionName.$_id_ dup key: { : 3 } (11000)

Inserted 4 document(s)

Updated 2 document(s)

Если мы выполним пример выше, но разрешим неотсортированные записи:

$bulk= newMongoDB\Driver\BulkWrite(['ordered'=>false]);/* ... */?>

Результат выполнения данного примера:

Operation#7: E11000 duplicate key error index: db.collection.$_id_ dup key: { : 3 } (11000)

Operation#8: E11000 duplicate key error index: db.collection.$_id_ dup key: { : 4 } (11000)

Inserted 5 document(s)

Updated 2 document(s)

为什么会这样[user_mongo@nosql01 replicaset]$ cd /opt [user_mongo@nosql01 opt]$ ll total 0 drwxr-xr-x. 3 root root 25 Mar 16 17:08 servers drwxr-xr-x. 2 root root 51 Mar 16 17:10 software [user_mongo@nosql01 opt]$ tar -zxvf /opt/software/mongodb-linux-x86_64-rhel70-4.4.12.tgz -C /opt/servers/mongodb_demo/replicaset/ mongodb-linux-x86_64-rhel70-4.4.12/LICENSE-Community.txt tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/LICENSE-Community.txt: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/MPL-2 tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/MPL-2: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/README tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/README: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/THIRD-PARTY-NOTICES tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/THIRD-PARTY-NOTICES: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/bin/install_compass tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/bin/install_compass: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/bin/mongo tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/bin/mongo: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/bin/mongod tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/bin/mongod: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/bin/mongos tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/bin/mongos: Cannot open: No such file or directory tar: Exiting with failure status due to previous errors [user_mongo@nosql01 opt]$ tar -zcvf /opt/software/mongodb-linux-x86_64-rhel70-4.4.12.tgz -C /opt/servers/mongodb_demo/replicaset/ tar: Cowardly refusing to create an empty archive Try `tar --help' or `tar --usage' for more information.
06-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值