Получить коллекцию MongoDB по ObjectID - PullRequest
3 голосов
/ 01 февраля 2012

MongoDB ID уникальны для одного кластера БД. Можно ли получить коллекцию, в которой используется конкретный ObjectID?

У меня есть шестнадцатеричное представление ObjectID, и мне нужно знать коллекцию, в которой находится документ с этим идентификатором. Возможно?

Ответы [ 2 ]

4 голосов
/ 01 февраля 2012

Это не встроенная функция, но это возможно путем итерации по всем коллекциям (db.getCollectionNames()) и вызова запроса find({_id: <yourid>}).Очевидно, что это будет очень медленная операция, поэтому изменение схемы или использование чего-то другого, кроме ObjectId в качестве значения _id, вероятно, поможет вам в этом.

2 голосов
/ 01 февраля 2012

Я не уверен насчет вашего варианта использования, но если вы используете ObjectID для _id, короткий ответ - нет.

BSON ObjectID - это 12-байтовое значение, состоящее из 4-байтовой метки времени (секунды с начала эпохи), 3-байтового идентификатора компьютера, 2-байтового идентификатора процесса и 3-байтового счетчика [1]

Или схематично:

|0 1 2 3 |  4 5 6  | 7 8 | 9 10 11 |
|  time  | machine | pid |   inc   |

Так что там нет информации о сборе.

Однако, любое значение может использоваться для _id, так что вы можете использовать свое собственное соглашение, которое может хранить информацию о коллекции, если это требуется ...

[1] http://www.mongodb.org/display/DOCS/Object+IDs#ObjectIDs-TheBSONObjectIdDatatype

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