【发布时间】:2020-08-25 05:34:59
【问题描述】:
使用 mongodb 在烧瓶中创建食谱共享页面作为学校项目。我想存储用户喜欢的食谱,这样他们就不能再喜欢它们了。我最初是在会话中完成的,然后意识到你可以删除或者它将过期等。 想存储他们喜欢的食谱的_id,但不知道如何存储其中的许多并查看它们。 有什么我没有想到的想法吗?我很新,所以如果这很简单,我很抱歉。 谢谢!!
【问题讨论】:
标签: python mongodb flask pymongo
使用 mongodb 在烧瓶中创建食谱共享页面作为学校项目。我想存储用户喜欢的食谱,这样他们就不能再喜欢它们了。我最初是在会话中完成的,然后意识到你可以删除或者它将过期等。 想存储他们喜欢的食谱的_id,但不知道如何存储其中的许多并查看它们。 有什么我没有想到的想法吗?我很新,所以如果这很简单,我很抱歉。 谢谢!!
【问题讨论】:
标签: python mongodb flask pymongo
我也是 MongoDB 的新手。将recipeID 存储在一个数组字段(例如:likedRecipes)中怎么样,它是Users 集合的一部分?如下所示:
用户集合:
[
{
'user' : 1,
'likedRecipes': [
1,
4,
5
]
},
{
'user' : 2,
'likedRecipes': [
3,
4,
2
]
}
]
食谱合集:
[
{
'id': 1,
'name': 'Samosa',
'ingredients': [...]
},
{
'id': 2,
'name': 'Paneer Tikka',
'ingredients': [...]
}
...,
...,
]
在 UI 中,当您为用户显示食谱时,您可以检查用户是否已经喜欢该食谱。如果用户已经点赞,则允许用户点赞,否则允许用户点赞。
以下是获取用户是否喜欢特定食谱的查询:
db.user.aggregate([
{
$match: {
user: 2
}
},
{
$project: {
isLiked: {
$cond: [
{$in: [1, "$likedRecipes"]},
true,
false
]
}
}
}
])
说明:
id,所以使用$match操作符。$cond用于检查当前显示配方的id是否存在于登录用户的likedRecipe数组中,如果存在则返回true,否则返回false。$project 运算符将上述结果放入一个名为isLiked 的新字段中。希望对你有帮助。
【讨论】: