V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
billion

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

  •  
  •   billion ·
    kingname · Jul 3, 2017 · 1357 views
    This topic created in 3223 days ago, the information mentioned may be changed or developed.

    在 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 replies    2017-07-17 23:49:39 +08:00
    zxiso
        1
    zxiso  
       Jul 3, 2017 via Android
    可以看看 mgo 的 select
    billion
        2
    billion  
    OP
       Jul 3, 2017 via Android
    @zxiso 问题在于,拿到以后的数据,我如果用 bson.M 就会报错,用 bson.D 数据又不全
    quella
        3
    quella  
       Jul 17, 2017
    @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)
    }
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2514 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 08:14 · PVG 16:14 · LAX 01:14 · JFK 04:14
    ♥ Do have faith in what you're doing.