为了账号安全,请及时绑定邮箱和手机立即绑定

如何根据用户输入重新组织而不复制 MongoDB 文档?

如何根据用户输入重新组织而不复制 MongoDB 文档?

慕标琳琳 2022-10-21 14:22:56
我正在使用 Node.js、Mongoose 和 MongoDB。在 Postman 中进行测试。2个用户可以回答问题。我想组织一下,稍后也显示这些问题和 2 个用户的答案。我可以实现将 2 个用户的答案分成两个不同的数组。但我想要的是:问题不应该重复,答案应该附加到两个用户回答的问题上。使用这段代码,我几乎达到了预期的结果,但并不完美。请看下面我的预期结果。        let user = await User.findById(req.user.id);        let user2 = await User.find({ matched: user.email });        let answer = await Answer.find({            by: user.email,        });        let answer2 = await Answer.find({            by: user2[0].email,        });        var array = [];        var allAnswers = {};        allAnswers["1"] = answer;        allAnswers["2"] = answer2;        array.push(allAnswers);        res.json(allAnswers);不太好的结果:{    "1": [        {            "question": "Question1",            "answer": "some answer",            "by": "user2"        }    ],    "2": [        {            "question": "Question1",            "answer": "some answer",            "by": "user1"        },        {            "question": "Question2",            "answer": "some answer",            "by": "user1"        }    ]}预期和期望的结果:{        "Question1": [            {                "answer": "some answer",                "by": "user2"            },            {                "answer": "some answer",                "by": "user1"            }        ],        "Question2": [            {                "answer": "some answer",                "by": "user1"            }        ]}由于 user2 没有回答 Question2,我不想显示:{            "Question1": [                {                    "answer": "some answer",                    "by": "user2"                },                {                    "answer": "some answer",                    "by": "user1"                }            ], }当然,可能有数百个相关问题,但只有两个用户回答。
查看完整描述

1 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞


db.collection.aggregate([

  {

    "$group": {

      "_id": "$question",

      "data": {

        "$push": "$$ROOT"

      }

    }

  },

  {

    "$project": {

      "data._id": 0,

      "data.question": 0

    }

  }

])

它按问题分组并仅计划需要的内容。


查看完整回答
反对 回复 2022-10-21
  • 1 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号