我试图从mongo查询返回匹配文档以及匹配文档的数量。有办法做到这一点与一个查询?
我目前用来返回文档的代码如下所示,我需要返回员工在集合中出现的所有时间以及文档本身:
db.collection.find({employeeNumber: employeeNumber})
我知道要返回计数应该这样做:
db.collection.countDocuments({employeeNumber: employeeNumber})
任何帮助将不胜感激,因为我的蒙古知识是相当基本的。
您可以尝试使用$facet进行聚合查询,以获得类似于
的输出:{
"documents": [/*your documents matched*/],
"count": X
}
所以你可以这样做:
- 第一个
$match
得到期望的结果。 - 然后
$facet
创建两个输出,一个是匹配本身,另一个是使用$count
的文档数量。 - 最后两步是格式化结果和输出格式。
db.collection.aggregate([
{
"$match": {
"employeeNumber": 1
}
},
{
"$facet": {
"documents": [],
"count": [{"$count": "count"}]
}
},
{
"$set": {
"count": {"$arrayElemAt": ["$count",0]}
}
},
{
"$project": {
"documents": 1,
"count": "$count.count"
}
}
])
例子