2011-03-25 29 views
2

我想將我自己的唯一值插入到mongodb $id字段 我已經擁有一個唯一的密鑰,我不想佔用額外的空間和另一個索引。

我該如何用PHP API做到這一點?

回答

0

檢查此鏈接

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

只要你能保證唯一性,你不會受限於使用默認的「_id」的MongoDB用品。

因此,這取決於您如何生成此號碼。如果你想在MongoDB中存儲這個數字,那麼你可以將它存儲在一個單獨的集合中,併爲每個需要的新URL添加它。

使用$ inc動詞可以實現遞增字段,或者您可能想要了解MongoDB如何自動更新或增加值。 Unique IDs with mongodb

1

上面的文檔解釋這在一般的方式,而是給你一個具體的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))); 
-1

我寫的一個爲php生成自動增量值的類php 您可以在gitgub https://github.com/snytkine/LampCMS 上查看我的項目並查找/ lib/Lampcms/MongoIncrementor類。 它基本上跟蹤每個集合「nextValue」的值

對我很好,也許它也適合你。

也可以隨意檢查我的類,我大量使用MongoDB和php,也許你可以從代碼中學到東西,或者可以顯示/教我一些很酷的mongo/php代碼。

希望這會有所幫助。

2
$collection->save(array('_id' => new MongoId('my_mongo_id'), 'foo' => 'bar')); 
+1

這是行不通的,但你甚至不必使用MongoID類。你可以使用自己的散列作爲* _id *值 – dtbarne 2012-06-28 01:56:30

相關問題