$count (aggregation accumulator)
On this page本页内容
Definition定义
New in version 5.0. 5.0版新增。
$count
Returns the number of documents in a group.返回一个组中的文档数。
$count
is available in these stages:可在以下阶段使用:
$bucket
$bucketAuto
$group
$setWindowFields
(Available starting in MongoDB 5.0)(从MongoDB 5.0开始提供)
Disambiguation消除歧义
This page describes the 本页介绍$count
aggregation accumulator. For the $count
aggregation pipeline stage, see $count (aggregation pipeline)
.$count
聚合累加器。有关$count
聚合管道阶段,请参阅$count
(聚合管道)。
Syntax语法
$count
syntax:语法:
{ $count: { } }
$count
does not accept any parameters.不接受任何参数。
Behavior行为
$count
is functionally equivalent to using { $sum : 1 }
within the $group
stage.$count
在功能上等效于在$group
阶段中使用{ $sum : 1 }
。
See also: 另请参阅:
Examples实例
Create a 创建一个包含加利福尼亚州(cakeSales
collection that contains cake sales in the states of California (CA
) and Washington (WA
):CA
)和华盛顿州(WA
)蛋糕销售的cakeSales
系列:
db.cakeSales.insertMany( [
{ _id: 0, type: "chocolate", orderDate: new Date("2020-05-18T14:10:30Z"),
state: "CA", price: 13, quantity: 120 },
{ _id: 1, type: "chocolate", orderDate: new Date("2021-03-20T11:30:05Z"),
state: "WA", price: 14, quantity: 140 },
{ _id: 2, type: "vanilla", orderDate: new Date("2021-01-11T06:31:15Z"),
state: "CA", price: 12, quantity: 145 },
{ _id: 3, type: "vanilla", orderDate: new Date("2020-02-08T13:13:23Z"),
state: "WA", price: 13, quantity: 104 },
{ _id: 4, type: "strawberry", orderDate: new Date("2019-05-18T16:09:01Z"),
state: "CA", price: 41, quantity: 162 },
{ _id: 5, type: "strawberry", orderDate: new Date("2019-01-08T06:12:03Z"),
state: "WA", price: 43, quantity: 134 }
] )
The cakeSales
collection is used in the following examples.cakeSales
集合用于以下示例。
Use in $group
Stage在$group
阶段中使用
$group
StageThis example uses 本例使用$count
in the $group
stage to count the number of documents in the cakeSales
collection for each state
:$group
阶段的$count
来计算cakeSales
集合中每个状态的文档数:
db.cakeSales.aggregate( [
{
$group: {
_id: "$state",
countNumberOfDocumentsForState: {
$count: {}
}
}
}
] )
In the example:在示例中:
_id: "$state"
groups the documents by the按state
field value.state
字段值对文档进行分组。There are groups for有CA
andWA
.CA
和WA
的组。$count: {}
sets the将countNumberOfDocumentsForState
field to the number of documents that share the samestate
field value.countNumberOfDocumentsForState
字段设置为共享相同state
字段值的文档数。
In this output, the number of documents for 在该输出中,CA
and WA
is shown in the countNumberOfDocumentsForState
field:CA
和WA
的文档数显示在countNumberOfDocumentsForState
字段中:
{ "_id" : "CA", "countNumberOfDocumentsForState" : 3 }
{ "_id" : "WA", "countNumberOfDocumentsForState" : 3 }
Use in $setWindowFields
Stage在$setWindowFields
阶段中使用
$setWindowFields
StageThis example uses 本例使用$count
in the $setWindowFields
stage to count the number of documents in the cakeSales
collection for each state
defined in the window:$setWindowFields
阶段中的$count
来计算窗口中定义的每个状态的cakeSales
集合中的文档数:
db.cakeSales.aggregate( [
{
$setWindowFields: {
partitionBy: "$state",
sortBy: { orderDate: 1 },
output: {
countNumberOfDocumentsForState: {
$count: {},
window: {
documents: [ "unbounded", "current" ]
}
}
}
}
}
] )
In the example:在示例中:
partitionBy: "$state"
partitions the documents in the collection by按状态对集合中的文档进行分区。state
. There are partitions forCA
andWA
.CA
和WA
有分区。sortBy: { orderDate: 1 }
sorts the documents in each partition by按orderDate
in ascending order (1
), so the earliestorderDate
is first.orderDate
按升序(1
)对每个分区中的文档进行排序,因此最早的orderDate
是第一个。
output
sets thecountNumberOfDocumentsForState
field to the number of documents using$count
that is run in a documents window.output
使用在documents
窗口中运行的$count
将countNumberOfDocumentsForState
字段设置为文档数。The window contains documents between an该窗口包含在unbounded
lower limit and thecurrent
document in the output. This means$count
returns the number of documents between the beginning of the partition and the current document.unbounded
下限和输出中的current
文档之间的文档。这意味着$count
返回分区开始和当前文档之间的文档数。
In this output, the number of documents for 在该输出中,CA
and WA
is shown in the countNumberOfDocumentsForState
field:CA
和WA
的文档数显示在countNumberOfDocumentsForState
字段中:
{ "_id" : 4, "type" : "strawberry", "orderDate" : ISODate("2019-05-18T16:09:01Z"),
"state" : "CA", "price" : 41, "quantity" : 162, "countNumberOfDocumentsForState" : 1 }
{ "_id" : 0, "type" : "chocolate", "orderDate" : ISODate("2020-05-18T14:10:30Z"),
"state" : "CA", "price" : 13, "quantity" : 120, "countNumberOfDocumentsForState" : 2 }
{ "_id" : 2, "type" : "vanilla", "orderDate" : ISODate("2021-01-11T06:31:15Z"),
"state" : "CA", "price" : 12, "quantity" : 145, "countNumberOfDocumentsForState" : 3 }
{ "_id" : 5, "type" : "strawberry", "orderDate" : ISODate("2019-01-08T06:12:03Z"),
"state" : "WA", "price" : 43, "quantity" : 134, "countNumberOfDocumentsForState" : 1 }
{ "_id" : 3, "type" : "vanilla", "orderDate" : ISODate("2020-02-08T13:13:23Z"),
"state" : "WA", "price" : 13, "quantity" : 104, "countNumberOfDocumentsForState" : 2 }
{ "_id" : 1, "type" : "chocolate", "orderDate" : ISODate("2021-03-20T11:30:05Z"),
"state" : "WA", "price" : 14, "quantity" : 140, "countNumberOfDocumentsForState" : 3 }