为什么mongodb3.2.3报错不支持$filter呢
发布于 8 年前 作者 pauky 4234 次浏览 来自 问答

数据格式是: { time: {type: Date, required: true}, num: { type: Number, required: true}, countArticle: [ { _id: {type: String}, // 文章id hotScore: { type: Number} } ] } 目的是在聚合查询时过滤掉countArticle中_id不为’558a7590668170df629127d9的项

执行的mongo聚合查询命令是:

db.countHistory.aggregate([
                            {
                                // 修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
                                $project: {
                                    time: 1,
                                    countArticle: {
                                        $filter: {
                                            input: "$countArticle",
                                            as: "item",
                                            cond: { $eq: [ "$$item._id", '558a7590668170df629127d9' ] }
                                        }
                                    }
                                }
                            }
                        ]
                    );

下面的命令在同个版本的测试环境下可执行,而在阿里云服务器上部署的mongodb则报错。报错信息: {“error”:true,“msg”:“MongoError: exception: invalid operator ‘$filter’”,“errorCode”:-1}

回到顶部