【问题标题】:Store what recipes users have liked in mongodb/flask在 mongodb/flask 中存储用户喜欢的食谱
【发布时间】:2020-08-25 05:34:59
【问题描述】:

使用 mongodb 在烧瓶中创建食谱共享页面作为学校项目。我想存储用户喜欢的食谱,这样他们就不能再喜欢它们了。我最初是在会话中完成的,然后意识到你可以删除或者它将过期等。 想存储他们喜欢的食谱的_id,但不知道如何存储其中的许多并查看它们。 有什么我没有想到的想法吗?我很新,所以如果这很简单,我很抱歉。 谢谢!!

【问题讨论】:

    标签: python mongodb flask pymongo


    【解决方案1】:

    我也是 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
                    ]
                }
            }
        }
    ])
    

    说明:

    1. 需要匹配登录用户的id,所以使用$match操作符。
    2. $cond用于检查当前显示配方的id是否存在于登录用户的likedRecipe数组中,如果存在则返回true,否则返回false
    3. 使用$project 运算符将上述结果放入一个名为isLiked 的新字段中。

    希望对你有帮助。

    【讨论】:

    • 非常感谢您!我处于非常基本的 mongo 水平,我试图理解查询。你觉得你可以再解释一下吗?
    • 非常感谢!
    猜你喜欢
    • 2012-10-11
    • 2014-02-08
    • 2021-10-19
    • 2014-02-09
    • 2014-09-28
    • 2011-03-14
    • 2016-06-16
    • 1970-01-01
    • 2020-08-01
    相关资源
    最近更新 更多