我是mongoDB的新手,我想得到" COUNTS"来自createView中的两个相关集合。
userID contestCount namesCount
1 25 5
2 5 87
...
有人可以帮助我。 TNX
解决:
Tnx' Lohmar ASHAR'。
这非常有帮助,但如果'竞争'项目没有名称'子项,此查询返回错误的结果。 我将查询更改为:
db.users.aggregate([
{ $lookup: { from: "contests", localField: "_id", foreignField: "createdBy", as: "cs" }},
{ $lookup: { from: "names", localField: "_id", foreignField: "createdBy", as: "ns" } },
{ $project: { "cs._id": 0, "ns._id": 0 } },
{ $project: { contestsCount: {$size: "$cs"}, namesCount: {$size: "$ns"} } } ])
答案 0 :(得分:0)
我猜你可以做一个2步聚合,在第一步累积名称和竞赛成套,并在第一步得到长度
db.names.aggregate(
{$group: {
_id: "$createdBy"
"c": {$addToSet: "$contestId"},
"n": {$addToSet: "$_id"}
}},
{$project: {
_id: 1,
c: {$size: "$c"},
n: {$size: "$n"},
}}
)
这假设名称的创建者和比赛的创建者可以是/是同一个,否则当前设计是不可能的,你将不得不做2个查询并“手动”加入数据。