猿问

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

我正在使用 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"

                }

            ],

 }

当然,可能有数百个相关问题,但只有两个用户回答。


慕标琳琳
浏览 121回答 1
1回答

慕神8447489

玩db.collection.aggregate([  {    "$group": {      "_id": "$question",      "data": {        "$push": "$$ROOT"      }    }  },  {    "$project": {      "data._id": 0,      "data.question": 0    }  }])它按问题分组并仅计划需要的内容。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答