【问题标题】:Mongo 2.6.1 - Unrecognized pipeline stage name: '$out'Mongo 2.6.1 - 无法识别的管道阶段名称:'$out'
【发布时间】:2014-07-10 12:41:25
【问题描述】:

我有一个 Mongo 集合,我需要将一组对象移动到一个单独的集合中。

集合采用以下格式:

{
    _id: ObjectId("..."),
    name: "...",
    description: "...",
    widgets: [
       { someprop: somevalue },
       { someprop: somevalue }
    ]
}

我想将对象数组展开到单独的集合中。

根据http://docs.mongodb.org/manual/reference/operator/aggregation/out/ 的 $out 文档,我应该能够使用该运算符创建一个新集合。

以下 Mongo shell 命令中的前两个操作用于将数组展开为列表,但是当我添加 $out 操作时它失败了:

db.mytable.aggregate([
    { $project : {_id: 0, datasets : 1}},
    { $unwind : "$widgets"}, 
    { $out: "widgets"}
]);

错误:

Error: command failed: {
"errmsg" : "exception: Unrecognized pipeline stage name: '$out'",
"code" : 16436,
"ok" : 0
} : aggregate failed at src/mongo/shell/assert.js:13

【问题讨论】:

  • 客户端和服务器都运行 2.6 吗?
  • 就是这样!在 shell 中,version() 显示为 2.6.1,但 db.version() 为 2.4.9;我升级了 Mongo,但还没有复制新的 mongod 二进制文件并重新启动该服务。在我这样做之后, db.version() 显示 2.6.1 并且现在 $out 操作有效。谢谢

标签: mongodb


【解决方案1】:

确保您使用的是最新版本。 $out 是 2.6 中的新功能,使用 2.6.2 对我来说效果很好!

【讨论】:

  • 这应该是评论而不是答案。
猜你喜欢
  • 2017-06-04
  • 2021-02-10
  • 2019-09-01
  • 2020-10-07
  • 2016-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多