【问题标题】:Provide my own value for mongodb $id index with PHP使用 PHP 为 mongodb $id 索引提供我自己的值
【发布时间】:2011-07-22 15:51:05
【问题描述】:

我想将我自己的唯一值插入到 mongodb $id 字段中 我已经有一个唯一的键,我不想用另一个索引占用额外的空间。

如何使用 PHP API 做到这一点?

【问题讨论】:

    标签: php mongodb indexing


    【解决方案1】:
    $collection->save(array('_id' => new MongoId('my_mongo_id'), 'foo' => 'bar'));
    

    【讨论】:

    • 这确实有效,但您甚至不必使用 MongoID 类。您可以使用自己的哈希作为 _id
    【解决方案2】:

    上面的文档以一般方式解释了这一点,但为了给您一个特定于 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)) );
    

    【讨论】:

      【解决方案3】:

      查看此链接

      http://www.mongodb.org/display/DOCS/Indexes#Indexes-UniqueIndexes

      只要您能保证唯一性,您就不受限于使用默认的“_id”MongoDB 供应。

      因此,如何生成此数字取决于您。如果您想将此数字存储在 MongoDB 中,则可以将其存储在单独的集合中,并为每个所需的新 URL 递增。

      增加一个字段是通过使用 $inc 动词来实现的,或者您可能想看看 MongoDB 如何以原子方式更新或增加一个值。 Unique IDs with mongodb

      【讨论】:

        【解决方案4】:

        我写了一个类来为 php 中的 Mongo 生成自动增量值 你可以在 gitgub https://github.com/snytkine/LampCMS 上查看我的项目 并寻找 /lib/Lampcms/MongoIncrementor 类。 它基本上跟踪每个集合的“nextValue”值

        对我很有用,也许对你也有用。

        也请随意检查我的课程,我大量使用 MongoDB 和 php,也许您可​​以从代码中学到一些东西,或者可以向我展示/教我一些很酷的 mongo/php 代码。

        希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-03
          • 2012-09-15
          • 1970-01-01
          • 2012-01-15
          • 2020-03-05
          相关资源
          最近更新 更多