2011-03-25 3 views
2

mongodb에 고유 한 값을 삽입하려합니다. 필드 이미 고유 한 키가 있으며 아직 다른 인덱스로 추가 공간을 차지하지 않으려 고합니다.

어떻게 PHP API로이 작업을 수행 할 수 있습니까?

답변

0

확인이 링크만큼 당신이 고유성을 보장 할 수

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

는, 당신은 기본 "_id"MongoDB의 소모품을 사용에 제약이 아닙니다.

따라서이 번호를 생성하는 방법은 사용자에게 달려 있습니다. 이 번호를 MongoDB에 저장하고 싶으면 별도의 컬렉션에 저장하고 필요한 모든 새 URL에 대해이 번호를 증가시킬 수 있습니다.

$ inc 동사를 사용하여 필드를 증가 시키거나 MongoDB가 원자 적으로 값을 업데이트하거나 증가시키는 방법을 살펴볼 수 있습니다. Unique IDs with mongodb

1

워드 프로세서는 위의 일반적인 방법이 설명하지만, 문서 만들 때 생성 된 ID로 간단하게 설정 당신에게 _id 값을 PHP가 구체적인 예를 제공 :

<?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에서 Mongo에 대한 자동 증가 값을 생성하는 클래스 gitgub https://github.com/snytkine/LampCMS 에서 내 프로젝트를 체크 아웃하고/lib/Lampcms/MongoIncrementor 클래스를 찾을 수 있습니다. 기본적으로 컬렉션 별 "nextValue"값을 추적합니다.

저에게 잘 맞습니다. 어쩌면 효과가 있을지도 모릅니다.

또한 수업을 검토해보고 MongoDB와 PHP를 많이 사용합니다. 아마도 코드에서 뭔가를 배울 수도 있고 멋진 몽고/PHP 코드를 보여줄 수도 있습니다.

희망이 도움이됩니다.

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

이것은 작동하지만 MongoID 클래스를 사용할 필요조차 없습니다. * _id * 값으로 자신 만의 해시를 사용할 수 있습니다. – dtbarne