TL; DR;如何以两种不同方式聚合集合的方式查询mongo?
我正在学习查询MongoDB。假设我有一个集合,其中包含提交问卷的用户的结果,然后审核者签署他们已经审核过的。
我的收藏中的记录如下所示:
{
_id: 0,
Questions:
[
{
label: "fname",
response: "Sir"
},
{
label: "lname",
response: "Robin"
},
{
label: "What is your name?",
response: "Sir Robin of Camelot"
},
{
label: "What is your quest?",
response: "To seek the holy grail"
},
{
label: "What is the capital of Asyria?",
response: "I don't know that."
}
],
Signatures:
[
"Lancelot",
"Arthur"
]
}
我正在创建一个报告,显示每条记录的摘要。 对于每条记录,我需要显示以下内容:
名字
姓氏
签名数量。
我能够编写一个获取名字和姓氏的聚合查询。 我还能够编写一个获取签名数量的聚合查询。
但是,当我尝试编写一个可以同时获取这两者的聚合查询时,我感到困惑。
// In order to query the first and last name, I use this query:
[
{ $unwind: "$Questions" },
{ $match: { "Questions.Label": { $in: ["fname", "lname"] } } },
{ $project: { "Questions": 1 } },
{ $group: { _id: "$_id", Questions: { $push: "$Questions" } } }
]
// In order to query the number of signatures, I use this query:
[
{ $project: { "SignatureCount": { $size: "$Signatures" } } }
]
所有内容都适用于这两个查询,但我想编写一个单独的查询,将所有数据一起返回。
因此,例如,如果上面的示例记录是我的集合中的唯一记录,我希望查询返回:
{
_id: 0,
Questions:
[
{
label: "fname",
response: "Sir"
},
{
label: "lname",
response: "Robin"
}
],
SignatureCount: 2
}
答案 0 :(得分:1)