mongodb 3.2.18在管道中使用切片无法识别的管道阶段名称:' $ slice'

时间:2018-01-13 08:27:23

标签: mongodb aggregate slice pipeline

在mongodb的文件中," $ slice"在3.2版中引入。但是,在将我的mongodb升级到3.2后,我仍然会收到此错误。我还检查了db.version()和mongo --version,它们都是3.2.18。

来自评论聚合管道的

编辑

db.test.aggregate(
    [
        {
            $match : {"keya" : val}, {$slice : ["$mylist", 2] }
        }
    ]
)

1 个答案:

答案 0 :(得分:1)

这里的问题是$slice不能用作聚合管道中的顶级运算符,而只能作为$ project的一部分。请注意,在MongoDB文档中,它是Aggregation Pipeline Operators而非Aggregation Pipeline Stages的一部分。

请尝试以下代码:

db.test.aggregate([
    {$match : {"keya" : vala}}, 
    { $project: { keya: 1, myList: { $slice: [ "$myList", 2 ] } } }
])