对 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
]
}
}
}
]
我有两个 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
]
}
}
}
]