用mongodb在flask中创建一个菜谱分享页面作为学校项目。我想存储用户喜欢过哪些菜谱,让用户不能多喜欢一次w。我本来是在session里做的,后来发现可以删除,否则会过期等。想过存储他们喜欢的食谱的_id,但无法找出如何存储许多人,并通过他们看。任何想法,我没有想到这里?我很新,所以我道歉,如果这是简单的.谢谢你!
我对MongoDB也是新手。怎么样存储 recipeID
中的数组字段(如 likedRecipes
)的一部分,它是 Users
收藏?像下面这样。
Users collection:
[
{
'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
.希望能帮到你