只需尝试通过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
命令中而不是在视图的创建中起作用?
我尝试了其他简单的集合,在视图中总是零记录。 任何帮助将不胜感激。
答案 0 :(得分:0)
MongoDB 2.6不支持视图,这是MongoDB 3.4中的一项新功能。您可以在MongoDB Views Documentation的顶部看到以下内容:
3.4版中的新功能。
通常,文档列出了添加功能的版本,但是当您使用create
命令的文档指出时,它可能会变得晦涩。
该命令返回{ "ok" : 1 }
的原因是create
命令只是创建了一个名为managementFeedback
的集合。该命令甚至不了解其他字段,因此将其忽略。