使用PHP为mongodb$id索引提供我自己的值
我想在mongodb使用PHP为mongodb$id索引提供我自己的值,php,mongodb,indexing,Php,Mongodb,Indexing,我想在mongodb$id字段中插入我自己的唯一值 我已经有了一个唯一的键,我不想用另一个索引占用额外的空间 如何使用PHP API实现这一点?检查此链接 只要能够保证唯一性,就不必使用默认的“\u id”MongoDB供应品 因此,这取决于你如何生成这个数字。如果您想在MongoDB中存储这个数字,那么您可以将它存储在一个单独的集合中,并为每个需要的新URL递增它 字段的递增是通过使用$inc动词实现的,或者您可能希望了解MongoDB如何以原子方式更新或递增值。 上面的文档以一般方式解释了
$id
字段中插入我自己的唯一值
我已经有了一个唯一的键,我不想用另一个索引占用额外的空间
如何使用PHP API实现这一点?检查此链接
只要能够保证唯一性,就不必使用默认的“\u id”MongoDB供应品
因此,这取决于你如何生成这个数字。如果您想在MongoDB中存储这个数字,那么您可以将它存储在一个单独的集合中,并为每个需要的新URL递增它
字段的递增是通过使用$inc动词实现的,或者您可能希望了解MongoDB如何以原子方式更新或递增值。
上面的文档以一般方式解释了这一点,但为了给您提供一个特定于PHP的示例,您只需在创建文档时将_id值设置为生成的id:
<?php
$mongo = new Mongo();
$collection = $mongo->dbName->collectionName;
$id = your_id_generator(); // I assume you have one
$collection->save(array('_id' => $id, 'foo' => 'bar'));
print_r( $collection->findOne(array('_id' => $id)) );
我编写了一个类来为php中的Mongo生成自动增量值
你可以在gitgub上查看我的项目
并查找/lib/Lampcms/MongoIncrementor类。
它基本上跟踪每个集合的“nextValue”值
对我来说很好,也许对你也一样
也可以随意检查我的类,我大量使用MongoDB和php,也许你可以从代码中学习一些东西,或者可以展示/教我一些很酷的mongo/php代码
希望这能有所帮助。这确实有效,但您甚至不必使用MongoID类。您可以使用自己的散列作为_id值
$collection->save(array('_id' => new MongoId('my_mongo_id'), 'foo' => 'bar'));