寻找有关设置 MongoDB 模式的一些指导。这是场景:
我正在为人们创建一个保存书签功能。在数据库中,我只需要存储用户名、标题和链接。由此,我需要创建一个输出 JSON 并查询特定书签或一个人的整个提要的服务。从实施和性能的角度来看,这两种设置中的哪一种更有意义?
A)每个书签都是它自己的对象:
{
"_id": ObjectId("abcd1234"),
"username": "Choy",
"title": "This is my first link",
"url": "http://www.google.com"
},
{
"_id": ObjectId("abcd1234"),
"username": "Choy",
"title": "This is my second link",
"url": "http://www.bing.com"
}
B)每个用户都是自己的对象:
{
"_id": "Choy",
"bookmarks": {
"abcd1234": {
"title": "This is my first link",
"url": "http://www.google.com"
},
"abcd12345": {
"title": "This is my second link",
"url": "http://www.bing.com"
}
}
}
最初 (A) 对我来说更有意义,因为我可以轻松查询特定书签、更新和删除它。但是从应用程序的角度来看,当我想列出一个人的所有书签时,(B) 会更容易,因为我可以只做 a findOne(username)
on the_id
而不必在做 a 之后遍历每条记录find(username)
并转换为数组和然后是 JSON(我认为这有点占用内存)。
另一方面,添加新书签将是 (B) 中的一个额外步骤,因为我必须获取记录,将新书签推入其中,然后保存。