当前位置: 首页 > 知识库问答 >
问题:

Mongoose aggregate从另一个集合中获取多个记录中的相似项之和

钮轩昂
2023-03-14

我需要从用户的所有帖子中获得喜欢字段的总数
这里是模式
用户模式


    {
        "_id": "5f5b784209393b0638f896e2",
        "name": "Test User",
        "avatar": "https://someurl/attachments/media-6489.PNG"
    }

发布架构


    {
        "likes": [
            "5f4d553370eef30017288fb0",    // other users who liked the post
            "5f4fad6cc7d4990017fb0d29",
            "5f5a3c074de2d1246c99767b",
            "5f5b790532dd2f1de4127aa4",
            "5f5c6aeff8170922d44eeb7a"
        ],
        "_id": "5f65daf13ce59d0a5482ea0d",
        "text": "fdsa",
        "author": "5f5b784209393b0638f896e2",
    }

我是新来的猫鼬,提前感谢...

共有1个答案

张嘉熙
2023-03-14

终于完成了这个查询

const postsData = await User.aggregate([
    { $match: { _id: mongoose.Types.ObjectId(req.user.id) } },
    {
        $lookup: {
            from: "posts",
            localField: "_id",
            foreignField: "author",
            as: "posts",
        }
    },
    { $unwind: "$posts", },
    {
        $group: {
            _id: "$_id",
            likes: { $sum: { $size: "$posts.likes" } }
        }
    },
]);
 类似资料:
  • 我使用的是Vue.js和Firebase FiRecovery。现在我有两个集合和。在订单集合中,我已经存储了集合的每个文档的id。我现在必须从中获取相应用户的详细信息。我应该怎么做?这是我迄今为止所做的 我需要在userInfo中存储用户数据。提前谢谢

  • 问题内容: 假设有两个表: 表A 表B 表之间的联系是 messageID 字段。 我想要一个查询来生成这样的结果,在该查询中,我将所有字段从表A中拉出,并对表B中每条消息的注释数进行计数,如下所示: 我已经尝试过这样的事情: 但这是行不通的。有任何想法吗?似乎应该可以在一个查询中执行此操作。我正在使用MSSQL。谢谢你的帮助。 问题答案: 标量子查询将起作用: 与往常一样,有很多方法可以改变这只

  • 问题内容: 我想获得表中每个记录的最小日期,该记录具有一个主键的多个日期条目。看看我的桌子: 我想要这样的结果: 我想获取每个CaseNo的最短日期记录在我的桌子上。 我尝试了这段代码: 结果是这样的: 该代码删除没有最小日期的行。我想显示所有记录的最小日期为Min_date。 问题答案: 试试这个

  • 问题内容: K,所以我有两个表: 我想从类别中获取所有信息,并计算每个类别中的问题数(question_id)。 假设,第一个类别(计费)将有一个问题,第二个类别(安全)将有3个问题。 我已经试过了: 问题答案: 您想这样做: 在将确保没有问题类别获得与数= 0上市

  • 问题内容: 如果我有一个收藏,例如,我如何拿出第一件?我可以先叫一个,先取一个,然后扔掉。有没有更浪费的方法呢? 问题答案: Iterables.get(yourC,indexYouWant) 因为实际上,如果您使用的是收藏夹,则应该使用Google收藏夹。

  • 我对Gradle是全新的,但在我的Build.Gradle中尝试了以下功能: