如何解决如何使用struct使用Golang查询MongoDB
我在使用golang查询mongoDB时遇到问题。
基本上,我只想返回[] Post类型的文档的结果。
这是我的代码
package main
import (
"context"
"log"
"time"
"fmt"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
type SecretsStruct struct {
UserID string `bson:"userid" json:"userid"`
SecretOne string `bson:"secret_one" json:secret_one`
SecretTwo string `bson:"secret_two" json:secret_two`
SecretThree string `bson:"secret_three" json:secret_three`
}
type Post struct {
//ID primitive.ObjectID `bson:"_id"`
Title string `bson:"title"`
Body string `bson:"body"`
Tags []string `bson:"tags"`
Comments uint64 `bson:"comments"`
CreatedAt time.Time `bson:"created_at"`
UpdatedAt time.Time `bson:"updated_at"`
}
func main() {
//Connect to the mongodb
client,err := mongo.NewClient(options.Client().ApplyURI("mongodb://localhost:27017"))
if err != nil {
log.Fatal(err)
}
ctx,_ := context.WithTimeout(context.Background(),10*time.Second)
err = client.Connect(ctx)
if err != nil {
log.Fatal(err)
}
defer client.Disconnect(ctx)
//Determine a database & collection to search in
quickstartDatabase := client.Database("quickstart")
podcastsCollection := quickstartDatabase.Collection("podcasts")
//episodesCollection := quickstartDatabase.Collection("episodes")
cursor,err := podcastsCollection.Find(ctx,bson.M{})
if err != nil {
log.Fatal(err)
}
var podcasts []Post
if err = cursor.All(ctx,&podcasts); err != nil {
log.Fatal(err)
}
fmt.Println(podcasts)
//fmt.Println(cursor)
}
现在,即使没有将它们作为[] Post对象插入,它也会输出我的所有文档。
这是当前的输出:
[{Company Name [] 0 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC}
{Company Name [] 0 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC}
{My name is Thomas Hello world [] 0 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC}
{My name is Thomas Hello world [] 0 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC}
{Company Name [] 0 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC}]
我希望它是以下名称,因为我的名字是Thomas Hello world不是[] Post类型:
[{Company Name [] 0 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC}
{Company Name [] 0 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC}
{Company Name [] 0 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC}]
编辑:
这是mongoDB中数据的样子:
{ "_id" : ObjectId("5f319c9cb384c96b57e13c16"),"title" : "Company Name","author" : "Thomas" }
{ "_id" : ObjectId("5f319d55ad16c576b7227aa3"),"author" : "Thomas" }
{ "_id" : ObjectId("000000000000000000000000"),"title" : "My name is Thomas","body" : "Hello world","tags" : null,"comments" : NumberLong(0),"created_at" : ISODate("0001-01-01T00:00:00Z"),"updated_at" : ISODate("0001-01-01T00:00:00Z") }
{ "_id" : ObjectId("5f348c0df4736ca6b473984d"),"updated_at" : ISODate("0001-01-01T00:00:00Z") }
{ "_id" : ObjectId("5f348dfe125ef44c3c9ad664"),"author" : "Thomas" }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。