N1QL 以某种逻辑加入同一个 Bucket
N1QL join with same Bucket with some logic
我有以下json.
第一次战役
"campaign|1000":{
"_id": 1000,
"_type": "Campaign",
"country": 14,
"created": "2016-03-08T18:30:00.000Z",
"user": 45
"bids":[{
click:123
},
{
click:50
}
]
}
第二个用户
"User|257"{
"IMId": "",
"IMType": 0,
"_id": 257,
"_type": "User",
"children:[1,4,45,67,106]
"roles":[4]
"email": "krishn@inheritx.com",
}
现在我需要根据谁拥有角色=[4] 加入这个 json 并通过竞选加入 children。这里 children 是用户 like child 45 表示 "User|45"
我正在尝试以下查询
select Users._id,count(Campaign._id) total from Inheritx Campaign
join Inheritx Users on keys("User|"|| TOSTRING(Campaign.`user`))
join reachEffect realted_users on keys ARRAY "User|" || TOSTRING FOR
c IN Users.children END where Campaign._type="Campaign" and
Users.roles=[4] group by Users._id
但我需要加入活动,children 的用户有角色是 4
我需要 output 如下所示
{
user:257
clicks:157
}
两个选项。
(1) 您可以从活动开始,加入用户,然后再根据角色进行过滤。
(2) 您可以从用户开始,筛选角色,然后使用 INDEX JOIN 将用户加入市场活动。
见https://dzone.com/articles/join-faster-with-couchbase-index-joins
我有以下json.
第一次战役
"campaign|1000":{
"_id": 1000,
"_type": "Campaign",
"country": 14,
"created": "2016-03-08T18:30:00.000Z",
"user": 45
"bids":[{
click:123
},
{
click:50
}
]
}
第二个用户
"User|257"{
"IMId": "",
"IMType": 0,
"_id": 257,
"_type": "User",
"children:[1,4,45,67,106]
"roles":[4]
"email": "krishn@inheritx.com",
}
现在我需要根据谁拥有角色=[4] 加入这个 json 并通过竞选加入 children。这里 children 是用户 like child 45 表示 "User|45" 我正在尝试以下查询
select Users._id,count(Campaign._id) total from Inheritx Campaign
join Inheritx Users on keys("User|"|| TOSTRING(Campaign.`user`))
join reachEffect realted_users on keys ARRAY "User|" || TOSTRING FOR
c IN Users.children END where Campaign._type="Campaign" and
Users.roles=[4] group by Users._id
但我需要加入活动,children 的用户有角色是 4
我需要 output 如下所示
{
user:257
clicks:157
}
两个选项。
(1) 您可以从活动开始,加入用户,然后再根据角色进行过滤。
(2) 您可以从用户开始,筛选角色,然后使用 INDEX JOIN 将用户加入市场活动。
见https://dzone.com/articles/join-faster-with-couchbase-index-joins