文章目录
$documentNumber聚合运算符返回$setWindowFields聚合阶段文档在分区中的位置。从版本5.0开始支持。
语法
{
$documentNumber: {
} }
$documentNumber聚合运算符没有参数。
用法
$setWindowFields阶段的sortBy字段决定了文档的编号。$documentNumber返回文档在分区中位置的唯一数字,即便是sortBy字段的值重复也会返回唯一值。$documentNumber只能应用于$setWindowFields阶段$documentNumber包括了sortBy字段为null或缺失的文档。$documentNumber、$rank和$denseRank返回文档的位置都基于sortBy字段的值。$documentNumber跟$rank和$denseRank的区别在于对sortBy字段重复值的处理规则不同。$rank和$denseRank对于排序字段相同值的文档会返回相同的位置(称为排名)$documentNumber返回文档的唯一位置(称为文档编号)
举例
每个州的文档编号
使用下面的脚本创建cakeSales集合,包含了蛋糕在加利福尼亚州(CA)和华盛顿州(WA)的销售情况:
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 }
] )
下面的聚合脚本在$setWindowFields阶段使用$documentNumber输出每个州蛋糕销售文档的编号:
db.cakeSales.aggregate( [
{
$setWindowFields: {
partitionBy: "$state",
sortBy: {
quantity: -1 },
output: {
documentNumberForState: {
$documentNumber: {
}
}

最低0.47元/天 解锁文章
2035

被折叠的 条评论
为什么被折叠?



