【发布时间】:2011-07-22 15:51:05
【问题描述】:
我想将我自己的唯一值插入到 mongodb $id 字段中
我已经有一个唯一的键,我不想用另一个索引占用额外的空间。
如何使用 PHP API 做到这一点?
【问题讨论】:
我想将我自己的唯一值插入到 mongodb $id 字段中
我已经有一个唯一的键,我不想用另一个索引占用额外的空间。
如何使用 PHP API 做到这一点?
【问题讨论】:
$collection->save(array('_id' => new MongoId('my_mongo_id'), 'foo' => 'bar'));
【讨论】:
上面的文档以一般方式解释了这一点,但为了给您一个特定于 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)) );
【讨论】:
查看此链接
http://www.mongodb.org/display/DOCS/Indexes#Indexes-UniqueIndexes
只要您能保证唯一性,您就不受限于使用默认的“_id”MongoDB 供应。
因此,如何生成此数字取决于您。如果您想将此数字存储在 MongoDB 中,则可以将其存储在单独的集合中,并为每个所需的新 URL 递增。
增加一个字段是通过使用 $inc 动词来实现的,或者您可能想看看 MongoDB 如何以原子方式更新或增加一个值。 Unique IDs with mongodb
【讨论】:
我写了一个类来为 php 中的 Mongo 生成自动增量值 你可以在 gitgub https://github.com/snytkine/LampCMS 上查看我的项目 并寻找 /lib/Lampcms/MongoIncrementor 类。 它基本上跟踪每个集合的“nextValue”值
对我很有用,也许对你也有用。
也请随意检查我的课程,我大量使用 MongoDB 和 php,也许您可以从代码中学到一些东西,或者可以向我展示/教我一些很酷的 mongo/php 代码。
希望这会有所帮助。
【讨论】: