2015-01-18 6 views
0

Мне нужно сохранить ссылку на другую коллекцию, и я не могу решить, следует ли хранить ее как строку или как ObjectId(). Я вижу, что это возможно сделать это в обоих направлениях (в Монго оболочки):Как сохранить ссылку на другую коллекцию в MongoDb

Как ObjectId

db.books.findOne({_id:ObjectId("54bc1287c582714e9f062591")}); 
{ 
    "_id" : ObjectId("54bc1287c582714e9f062591"), 
    "title" : "Book title", 
    "author_id" : ObjectId("54bc12da5f5e8854718b4568") 
} 

как строка

db.books.findOne({_id:ObjectId("54bc1287c582714e9f062591")}); 
{ 
    "_id" : ObjectId("54bc1287c582714e9f062591"), 
    "title" : "Book title", 
    "author_id" : "54bc12da5f5e8854718b4568" 
} 

Я не буду искать по author_id, так что я там не нужен какой-либо индекс. Я возьму книгу, а затем возьму автора на author_id. Кстати, это всего лишь пример с books

ответ

2

Основное отличие состоит в том, что ObjectId займет до 12 байтов пространства (http://docs.mongodb.org/manual/reference/object-id/), в то время как строковое представление принимает 24 байта. Таким образом, использование ObjectId позволит вам сэкономить вам половину пространства.

Смежные вопросы