使用PHP为mongodb$id索引提供我自己的值

使用PHP为mongodb$id索引提供我自己的值,php,mongodb,indexing,Php,Mongodb,Indexing,我想在mongodb$id字段中插入我自己的唯一值 我已经有了一个唯一的键,我不想用另一个索引占用额外的空间 如何使用PHP API实现这一点?检查此链接 只要能够保证唯一性,就不必使用默认的“\u id”MongoDB供应品 因此,这取决于你如何生成这个数字。如果您想在MongoDB中存储这个数字,那么您可以将它存储在一个单独的集合中,并为每个需要的新URL递增它 字段的递增是通过使用$inc动词实现的,或者您可能希望了解MongoDB如何以原子方式更新或递增值。 上面的文档以一般方式解释了

我想在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'));