对 Mongodb 执行关系查询

Performing Relational Query on Mongodb

我有两个 collection。一个命名为事件,另一个命名为应用程序。 应用程序包含特定事件的用户应用程序数据。 我想找到那些用户没有申请的活动。

注意:
1. 应用中的eventId字段是事件的DBRef collection.
2. 应用中的userId字段对用户来说是DBRef collection.
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
                ]
            }
        }
    }
]