如何使用mongoDB在lambda函数中获得组合输出



我有两个集合1(RAM 2(详细信息。查找以下图片以获取您的参考。RAM收集详细信息

详细信息收集详细信息

在lambda函数中,当我通过事件中的等级时,我们将获得相关等级。但是我需要相同输出中的更多细节。

eg:当我通过等级事件10002时,我们将获得等级10002相关数据显示。但是我需要以及用户详细信息,例如Ramesh,Suresh
详细信息收集的详细信息。

def lambda_handler(event, context):
print("Received event: " + json.dumps(event, indent=1))
posts = db.user_posts
rankid = event['rank']
disposts = list(posts.find({"rank" : rankid}))
posts = json.dumps(disposts, default=json_util.default)
return json.loads(posts)

在以上代码中,我只会获得一个集合数据。我需要同一lambda功能的两个收集数据。

下面我的预期输出。

rank : 10002,
details: 
      0 : Object
        username : "ramesh",
        des : "developer",
        edu : "b.tech",
        age : 25
      1 : Object
        username : "suresh",
        des : "admin",
        edu : "mba",
        age : 27

不完全是,我需要相似的输出。

您可以用适当的代码帮助我。谢谢

尝试以下查询:

 db.getCollection('ram').aggregate([{ $match: { rank: '10002' } }, { $unwind: '$details' }, {
    $lookup:
    {
        from: "details",
        let: { userName: '$details.username' },
        pipeline: [
            {
                $match:
                {
                    $expr:
                    {
                        $eq: ['$$userName', '$username']
                    }
                }
            }
        ],
        as: "user_details"
    }
}, { $addFields: { 'user_details.des': '$details.des' } }, { $group: { _id: '$rank', details: { "$push": { $arrayElemAt: ["$user_details", 0] } } } }, { $project: { rank: '$_id', _id: 0, details: 1 } }])

也许您需要考虑存储 des ram> RAM collection 详细信息集合中的字段,这样,您只需用户名映射到用户名详细信息集合中的字段,这很容易。

相关内容

  • 没有找到相关文章

最新更新