我正在创建一个卡路里计数网页。我不确定食品记录的 MongoDB 数据库模式。它应该像这样工作:
我有一个食物收藏。 示例:
{
_id: ObjectID("X"),
name: "egg",
calories: 140,
protein: 12,
...
}
(每100克热量和蛋白质)
食物记录收集。示例:
{
food: ObjectID("X"),
count: 3,
weight: 50
}
而且我不知道在哪里保存有关当天部分/日期的信息。我应该把它保存在食物记录中吗?
{
food: ObjectID("X"),
count: 3,
weight: 50,
day: "2015-11-05",
part: "lunch"
}
或者我应该为日间部分创建一个单独的集合?
最有效的方法是什么?
在 MongoDB 中,您的架构设计很大程度上取决于
a) 集合的大小(记住集合上限为 16MB) b) 您将如何查询数据
由于您似乎想查看早餐、午餐和晚餐吃了什么,因此您可以使用以下模式:
{
"_id": ObjectId(....),
"day": "2015-12-01"
"part": "lunch",
"foodEaten": [
{
"foodName": "eggs",
"serving": 2,
"caloriesPerServe": 21,
"proteinsPerServe": 34,
...
},
{
"foodName": "pancakes",
"serving": 3,
"caloriesPerServe": 367,
"proteinsPerServe": 0.23,
...
},
....
]
}
如果您有用户,您可以通过添加用户键:值来链接用户(用户信息将在另一个集合中)。如果您认为该集合将超过 16MB 的上限,您可以创建一个单独的食物集合并在 foodEaten 数组中引用它。由于我不知道您的项目范围,我不知道是否会出现这种情况,但我相信这可能是最适合您的数据库的架构。
您可以查看 MongoDB 文档以获取更多信息或此视频。
我正在为我的餐厅创建一个系统,我需要一个数据库来注册食物和饮料