Database 在Mongodb上执行关系查询

Database 在Mongodb上执行关系查询,database,mongodb,algorithm,mongodb-query,rdbms,Database,Mongodb,Algorithm,Mongodb Query,Rdbms,我有两个收藏。一个命名事件和另一个命名应用程序。 应用程序包含特定事件的用户应用程序数据。 我想查找用户尚未应用的事件 注: 1.应用程序中的eventId字段是事件集合的DBRef。 2.应用程序中的userId字段是用户集合的DBRef。 3.用户只能对事件应用一次时间 请帮帮我。提前谢谢 活动: [ { "_id" : ObjectId("5d07c45fabb5c771f8a81228"), "fee" : 400 }, {

我有两个收藏。一个命名事件和另一个命名应用程序。 应用程序包含特定事件的用户应用程序数据。 我想查找用户尚未应用的事件

注: 1.应用程序中的eventId字段是事件集合的DBRef。 2.应用程序中的userId字段是用户集合的DBRef。 3.用户只能对事件应用一次时间

请帮帮我。提前谢谢

活动:

[
    {
        "_id" : ObjectId("5d07c45fabb5c771f8a81228"),
        "fee" : 400
    },
    {
        "_id" : ObjectId("5d07c461abb5c771f8a81229"),
        "fee" : 500
    },
    {
        "_id" : ObjectId("5d07c463abb5c771f8a8122a"),
        "fee" : 700
    },
    {
        "_id" : ObjectId("5d07c466abb5c771f8a8122b"),
        "fee" : 800
    }
]

应用程序:

[
    {
        "_id" : ObjectId("5d07c4e8abb5c771f8a8122c"),
        "eventId" : ObjectId("5d07c45fabb5c771f8a81228"),
        "userId" : ObjectId("5d07c45fabb5c772f8a81978"),
        "text" : "I am interested"
    }
]


阶段1:$lookup-用于加入事件和应用程序集合

阶段2:$match-筛选没有任何用户应用程序的事件

[
    {
        '$lookup': {
            'from': 'applications', 
            'localField': '_id', 
            'foreignField': 'eventId', 
            'as': 'eventsApps'
        }
    }, {
        '$match': {
            '$expr': {
                '$lte': [
                    {
                        '$size': '$eventsApps'
                    }, 0
                ]
            }
        }
    }
]

现在你只是要求我们用定制的教程重写一本教科书/手册&做你的家庭作业&你没有表现出任何研究或其他努力。大量的需求不是关于主题问题的。请看,点击谷歌的“stackexchange家庭作业”和鼠标文本上方的投票箭头。展示你能做的相关部分,并解释你被困的第一个地方。@philipxy我之前已经使用MongoDB聚合完成了这个任务,好的。我只是想知道是否有人有一个优化的解决方案。现在,如果您是数据库新手,检索数据的唯一方法是查询,并且您无法为相同的数据创建查询,那么当一些结果或查询没有用处或可能误导其他用户时,我应该如何显示这些结果或查询。显示您可以执行的相关部分,并解释您遇到的第一个问题。PS请在代码问题中给出一个-剪切、粘贴和可运行代码;示例输入,具有预期和实际输出,包括逐字错误消息;标签和清晰的说明和解释。这包括您能给出的最少代码,即您显示为OK的代码,由您显示为not OK的代码扩展。调试基础,谢谢。之前我是这样做的,我将从“应用程序”集合中检索事件ID,然后使用“$nin”查询事件集合