gpt4 book ai didi

mongodb - 食物记录的数据库模式

转载 作者:可可西里 更新时间:2023-11-01 09:35:36 26 4
gpt4 key购买 nike

我正在创建一个卡路里计算网页。而且我不确定食物记录的 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 文档以获取更多信息或 this video .

关于mongodb - 食物记录的数据库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33550596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com