如何使用Go的mongo驱动程序在Mongodb查询上创建视图?

时间:2018-07-14 07:03:02

标签: mongodb go

我正在与Golang和Mongodb合作。我正在为Go使用https://godoc.org/gopkg.in/mgo.v2 mongo驱动程序。我想在查询中写视图,但是发现没有为此定义功能。 Mongo Views是版本3.4中提供的最新功能。我也在其他驱动程序中检查了它:

https://godoc.org/github.com/mongodb/mongo-go-driver/mongo

它甚至不在那里。如何在驱动程序中获得此功能?

1 个答案:

答案 0 :(得分:2)

  

我想在查询中写视图,但是我发现没有为此定义功能。

自MongoDB v3.4起,支持从现有集合或其他视图创建只读视图。

要创建视图,您可以执行create()数据库命令。例如:

db.runCommand( { create: <view>, 
                 viewOn: <source>, 
                 pipeline: <pipeline>, 
                 collation: <collation> 
} );

例如,如果您有一个来自mongo shell的create视图命令,如下所示:

db.runCommand( {create:"testview", 
                viewOn: "collectionName", 
                pipeline: [ {"$project":{ "fieldA":1 } } ] 
});

使用mongo-go-driver(当前版本为0.0.9),可以使用Go编写上述create view命令,如下所示:

_, err = database.RunCommand(
    context.Background(),
    bson.NewDocument(bson.EC.String("create", "testview"),
                     bson.EC.String("viewOn", "collectionName"),
                     bson.EC.ArrayFromElements(
                         "pipeline", bson.VC.DocumentFromElements(
                             bson.EC.SubDocumentFromElements(
                                 "$project", bson.EC.Int32("fieldA", 1),),
                             ),
                         ),
                     ),
)