【发布时间】:2018-12-06 15:34:59
【问题描述】:
目前我正在使用这个 php 代码在 MongoDB 中创建我自己的自动增量 ID。
$mongo = new MongoDB\Driver\Manager("mongodb://10.1.1.111:27017");
$find = [ '_id' => 'campaignid' ];
$query = new MongoDB\Driver\Query($find, [ ]);
$rows = $mongo->executeQuery('testdb.counters', $query);
$arr = $rows->toArray();
$oldId = 0;
if(count($arr) > 0)
{
$old = array_pop($arr);
$oldId = intval($old->seq);
}
$nextId = ++$oldId;
$set = [ '_id' => 'campaignid', 'seq' => $nextId ];
$insRec = new MongoDB\Driver\BulkWrite;
$insRec->update($find, ['$set' => $set], ['multi' => false, 'upsert' => true]);
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
$result = $mongo->executeBulkWrite('testdb.counters', $insRec, $writeConcern);
我必须获取旧 ID,递增并写回它。我认为MongoDB\Driver\Manager::executeReadWriteCommand 有更好的方法,但我找不到。
我找到了thisfindAndModify 的解决方案,但它是为 deprecated 的 MongoClient 编写的。
任何想法如何使用executeReadWriteCommand 或者更好的方法?
【问题讨论】:
-
在mongo-php-library中有一个FindAndModify操作
标签: php mongodb auto-increment