在mongodb的文件中," $ slice"在3.2版中引入。但是,在将我的mongodb升级到3.2后,我仍然会收到此错误。我还检查了db.version()和mongo --version,它们都是3.2.18。
来自评论聚合管道的编辑
db.test.aggregate(
[
{
$match : {"keya" : val}, {$slice : ["$mylist", 2] }
}
]
)
答案 0 :(得分:1)
这里的问题是$slice不能用作聚合管道中的顶级运算符,而只能作为$ project的一部分。请注意,在MongoDB文档中,它是Aggregation Pipeline Operators
而非Aggregation Pipeline Stages
的一部分。
请尝试以下代码:
db.test.aggregate([
{$match : {"keya" : vala}},
{ $project: { keya: 1, myList: { $slice: [ "$myList", 2 ] } } }
])