当更改某个文档的位置时(不确定结构的确切程度),我想在另一个集合中创建该文档的备份,然后再将其保存回我当前的集合。要进行备份,我尝试了以下操作:
$mongoDbObj = $collection->findOne($filter);
...
$collectionBackup->insert($mongoDbObj,true);
...但这只能工作一次,因为 MongoID 被复制了。当我再次尝试备份同一个文档时,mongoID 已经存在于 backupCollection 中。所以我的问题是:
我可以在 PHP 中复制 MongoDB 文档,用新的 MongoID 覆盖 MongoID,然后再插入另一个集合,而不更改原始文档的 MongoID?
这个问题简化为:我该怎么做:
$mongoDbObj = $collection->findOne($filter);
...
$collectionBackup->insert($mongoDbObj,true);
// change MongoId so the next line doesn't throw exception
$collectionBackup->insert($mongoDbObj,true);
// save my object back with the original MongoID
$collection->save($mongoDbObj);
同样有用的是如何克隆/复制 MongoDB 文档,然后只需在复制的文档中粘贴新的 MongoID 即可轻松解决问题。