食品记录的数据库架构

用户名

我正在创建一个卡路里计算网页。而且我不确定食品记录的MongoDB数据库架构。它应该像这样工作:

  • 一天分为几个部分(早餐,午餐,晚餐)
  • 您可以将食物记录保存到其中一部分中。例如鸡蛋-3x50(克)(3个鸡蛋)
  • 每天都有一页。页面分为日间部分,此处列出了所记录的食物。有食物信息-每食物/天部分/天的卡路里计数/蛋白质/ ...

我有食物集 例子:

{ 
  _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文档以获得更多信息或该视频

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章