如何在 MongoDb 中存储对其他集合的引用

Arū*_*kas 3 mongodb

我需要存储对其他集合的引用,但我无法决定是将它存储为字符串还是ObjectId(). 我认为可以通过两种方式进行(在 mongo shell 中):

作为 ObjectId

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

作为字符串

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

我不会搜索 by author_id,所以我不需要任何索引。我会带一本书,然后会带一位作者author_id。顺便说一句,这只是一个例子books

Ren*_*Web 7

主要区别在于 ObjectId 将占用 12 个字节的空间(http://docs.mongodb.org/manual/reference/object-id/)而字符串表示占用 24 个字节。因此,使用 ObjectId 将为您节省一半的空间。