Укажите мое собственное значение для индекса mongodb $ id с помощью PHP - PullRequest
2 голосов
/ 25 марта 2011

Я хочу вставить свое собственное уникальное значение в поле mongodb $id У меня уже есть уникальный ключ, и я не хочу занимать дополнительное место с еще одним индексом.

Какя могу сделать это с помощью PHP API?

Ответы [ 4 ]

2 голосов
/ 25 марта 2011
$collection->save(array('_id' => new MongoId('my_mongo_id'), 'foo' => 'bar'));
1 голос
/ 25 марта 2011

Приведенные выше документы объясняют это в общих чертах, но, чтобы дать вам специфичный для PHP пример, вы просто устанавливаете значение _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)) );
0 голосов
/ 25 марта 2011

Я написал класс для генерации значений автоинкремента для Mongo в php Вы можете проверить мой проект на gitgub https://github.com/snytkine/LampCMS и найдите класс / lib / Lampcms / MongoIncrementor. Он в основном отслеживает значение "nextValue" для каждой коллекции

Прекрасно работает для меня, может быть, это будет работать и для вас.

Также не стесняйтесь проверять мои классы, я интенсивно использую MongoDB и php, может быть, вы можете чему-то научиться из кода или, может быть, можете показать / научить меня некоторому классному коду монго / php.

Надеюсь, это поможет.

0 голосов
/ 25 марта 2011

проверьте эту ссылку

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

Пока вы можете гарантировать уникальность, вы не обязаны использовать поставляемые по умолчанию "_id" MongoDB.

Следовательно, вам решать, как вы генерируете это число. Если вы хотите сохранить этот номер внутри MongoDB, вы можете сохранить его в отдельной коллекции и увеличивать его для каждого нового требуемого URL.

Увеличение поля достигается с помощью глагола $ inc, или вы можете посмотреть, как MongoDB может атомарно обновлять или увеличивать значение. Уникальные идентификаторы с mongodb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...