猿问

查询具有不同结构的文档以获取结果

我有一组插入 Mongo 的文档,看起来像这样:


type Stats struct {

   UserStatus string `json:"userStatus" bson:"userStatus"`

   ... a bunch more fields

}


type User struct {

    ID               bson.ObjectId `json:"-" bson:"_id"`

    LastName         string        `json:"lastName"  bson:"lastName"`

    FirstName        string        `json:"firstName" bson:"firstName"`

    Role             string        `json:"role" bson:"role"`

    Tags             []string      `json:"tags" bson:"tags"`

    ... (a bunch more fields)

    Stats            UserStats     `json:"stats" bson:"stats"`

}

我想查询它以获得特定的报告,所以我尝试了这个:


func UserNameReport() {

    ... get mongo session, etc.


   // create struct of just the data I want returned

    type UserNames struct {

        LastName         string        `json:"lastName"  bson:"lastName"`

        FirstName        string        `json:"firstName" bson:"firstName"`

        ... etc

        UserStats        Stats         `json:"stats" bson:"stats"` 

    }


    projection := bson.M{"lastName":1, "firstName":1, etc}

    result := []UserNames{}

    err := x.Find({query user collection}).Select(projection).All(&result)

    ...

}

这有效 - 我的问题是,如何只包含“Stats”结构中的一个字段?换句话说,我基本上希望“投影”是这样的:


projection := bson.M{"lastName":1, ..., "stats.userStatus":1}  <-- stats.userStatus doesn't work

...

err := x.Find({query user collection}).Select(projection).All(&result)

我在结果中获得了整个“统计”嵌入结构 - 如何从子文档中过滤掉一个字段并将其放入结果集中?


谢谢!


MMTTMM
浏览 167回答 2
2回答
随时随地看视频慕课网APP

相关分类

Go
我要回答