MongoDB 2.6运行命令创建视图返回空视图

时间:2019-01-08 14:41:23

标签: mongodb

只需尝试通过mongo cli在MongoDB 2.6上创建一个非常简单的视图。

遵循官方文档,网址为:https://docs.mongodb.com/manual/reference/command/create/#dbcmd.create

我用以下文件创建了一个名为survey的示例集合:

{ _id: 1, empNumber: "abc123", feedback: { management: 3, environment: 3 }, department: "A" }
{ _id: 2, empNumber: "xyz987", feedback: { management: 2, environment: 3 }, department: "B" }
{ _id: 3, empNumber: "ijk555", feedback: { management: 3, environment: 4 }, department: "A" }

请确保,db.survey.find()显示了集合中的三个文档。

由于我使用的是2.6版而不是3.4版,因此无法使用新的createView包装器,但是按照示例,我只是发出了以下命令:

db.runCommand ( {
   create: "managementFeedback",
   viewOn: "survey",
   pipeline: [ { $project: { "management": "$feedback.management", 
department: 1 } } ]
} )

以上命令仅返回{ "ok" : 1 },表明已成功执行,但是db.managementFeedback.find()绝对不返回任何内容。

为确保che管道正确,我发出了以下命令:

db.survey.aggregate({ $project: { "management": "$feedback.management", department: 1 } })

与前面的命令相同的管道,但是没有创建视图,并且它正确返回以下输出:

{ "_id" : 1, "department" : "A", "management" : 3 }
{ "_id" : 3, "department" : "A", "management" : 3 }
{ "_id" : 2, "department" : "B", "management" : 2 }

我承认我有些困惑:为什么管道在简单的aggregate命令中而不是在视图的创建中起作用?

我尝试了其他简单的集合,在视图中总是零记录。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

MongoDB 2.6不支持视图,这是MongoDB 3.4中的一项新功能。您可以在MongoDB Views Documentation的顶部看到以下内容:

  

3.4版中的新功能。

通常,文档列出了添加功能的版本,但是当您使用create命令的文档指出时,它可能会变得晦涩。

该命令返回{ "ok" : 1 }的原因是create命令只是创建了一个名为managementFeedback的集合。该命令甚至不了解其他字段,因此将其忽略。