🦸♂️ 重复阶段
信息
额外活动:如果您有额外的时间或在家跟着做,可以尝试,导师不会在动手实验中进行讲解
从 Aggregation Pipelines 手册 中引用:
除了 $out, $merge, $geoNear, $changeStream 和 $changeStreamSplitLargeEvent 阶段外,其他所有阶段都可以在一个管道中多次出现。
因此我们可以重复大多数阶段,并做类似于以下操作,以获取1985年且页数超过100页的所有书籍(尽管这可能有意义或没有意义)
- Atlas UI
- MongoDB Shell
[
{
$match: { pages: {$gte: 100} }
},
{
$match: { year: 1985 }
}
]
db.books.aggregate([{$match: {pages: {$gte: 100}}}, {$match: {year: 1985}}])
💻 在上述聚合的末尾添加几个 $limit
阶段,限制为1本书,看看会发生什么
答案
- Atlas UI
- MongoDB Shell
[
{$match: {pages: {$gte: 100}}},
{$match: {year: 2011}},
{$limit: 1},
{$limit: 1},
]
db.books.aggregate([
{$match: {pages: {$gte: 100}}},
{$match: {year: 2011}},
{$limit: 1},
{$limit: 1},
])