1
我想使用mgo選擇一個子文檔。 在選擇之前,查詢應該查詢右頂層文檔。 我嘗試這樣做:查詢文檔並選擇子文檔
name := "anything"
w := models.Wallet{}
c := s.DB("ep2").C("users")
err := c.Find(bson.M{"name": name}).Select(bson.M{"wallet": 1}).One(&w)
這些都是結構:
type User struct {
Id bson.ObjectId `bson:"_id,omitempty" json:"-" form:"-"`
Wallet Wallet `bson:"wallet,omitempty" json:"wallet,omitempty" form:"wallet,omitempty"`
}
type Wallet struct {
Taddr string `json:"taddr,omitempty" form:"taddr,omitempty"`
TaddrPriv string `json:"-" form:"-"`
Tbalance float64 `json:"tbalance" form:"tbalance,omitempty"`
}
它返回一個空錢包文件。
非常感謝你。有沒有辦法只接收錢包?也許......像添加錢包收集併爲用戶設置外鍵? – nayD93
@ nayD93上面的查詢只檢索包裹在用戶中的錢包(加上用戶ID)。如果即使這樣做會困擾你,你也可以使用[聚合框架](https://docs.mongodb.com/manual/aggregation/)來投影返回的數據,然後你可以只檢索錢包,解包,沒有用戶標識。以['Collection.Pipe()'](https://godoc.org/gopkg.in/mgo.v2#Collection.Pipe)爲起點。 – icza
@ nayD93當然,將錢包拆分成自己的集合並查詢這也是一個可行的選擇。 – icza