V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
billion
V2EX  ›  Go 编程语言

mgo 如何在运行的时候动态指定需要返回的哪些字段?

  •  
  •   billion ·
    kingname · 2017-07-03 18:18:32 +08:00 · 970 次点击
    这是一个创建于 2699 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 Go 语言中使用 mgo 的时候,一般需要先定义一个 Struct,例如:

    type PrivacyInfo struct {
    	Phone string        `bson:"phone"`
    	Id    bson.ObjectId `json:"id" bson:"_id"`
    }
    

    这样就可以把_id 和 phone 都取出来。但是除了 phone 这一列外,还有可能取"_id"和"telephone"或者"_id"和"number"

    需要取的数据是用户在程序运行的时候手动指定的。在这种情况下,应该如何才能只取需要的数据?

    3 条回复    2017-07-17 23:49:39 +08:00
    zxiso
        1
    zxiso  
       2017-07-03 18:45:37 +08:00 via Android
    可以看看 mgo 的 select
    billion
        2
    billion  
    OP
       2017-07-03 19:02:19 +08:00 via Android
    @zxiso 问题在于,拿到以后的数据,我如果用 bson.M 就会报错,用 bson.D 数据又不全
    quella
        3
    quella  
       2017-07-17 23:49:39 +08:00
    @billion
    db := session.DB("test")
    collection := db.C("aaa")
    result := make(map[bson.ObjectId]interface{})
    iter := collection.Find(nil).Iter()
    for iter.Next(&result) {
    fmt.Println(result)
    }
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2643 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:12 · PVG 23:12 · LAX 07:12 · JFK 10:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.