如何在mgo Mongodb中选择所有相同类型的嵌入式文档?

伊万·瓦伦丁:

我有一个使用mgo / mongodb的go应用程序。我使用的是嵌入式文档,而不是关系文档。

所以我有...(为简洁起见,已编辑了一些代码)。

type User struct {
    Id          bson.ObjectId `bson:"_id,omitempty" json:"id"`
    Name        string        `form:"name" bson:"name" json:"name"`
    Password    string        `form:"password" bson:"password,omitempty" json:"password" binding:"required"`
    Email       string        `form:"email" bson:"email,omitempty" json:"email" binding:"required"`
    Artists     []Artist      `form:"artists" bson:"artists,omitempty" json:"artists" inline`
    Releases    []Release     `form:"releases" bson:"releases,omitempty" json:"releases" inline`
    ContentFeed []Content     `form:"content_feed" bson:"content_feed,omitempty" json:"content_feed" inline`
    Profile     Profile       `form:"profile" bson:"profile,omitempty" json:"profile" inline`
    TopTracks   []Track       `form:"top_tracks" bson:"top_tracks" json:"top_tracks" inline`
}

type Artist struct {
    Id     bson.ObjectId `bson:"_id,omitempty" json:"id"`
    Title  string        `form:"title" bson:"title" json:"title"`
    Genres string        `form:"genres" bson:"genres" json:"genres"`
}

func (repo *ArtistRepo) GetArtists() ([]Artist, error) {
    results := &[]Artist{}
    err := repo.collection.Find(???).All(results)
    return results, err
}

我正试图从所有用户那里获取所有艺术家。但是我无法确定查询中需要什么吗?我已经简短地谈到了Map / Reduce,但是它似乎不适用于我尝试做的事情。

BraveNewCurrency:

我认为您假设mgo是一个“ ORM ”。但这只是在Mongo中存储数据的一种简单方法。有3种不同的方法可以解决您的问题:

  1. 将不同的类型放入不同的集合中。这样,每个文档都是相同的类型。(集合就像关系数据库中的“表”一样)。

  2. 用事物的类型标记每个事物(即,将对象类型存储在字段中),然后就可以对其进行查询。

  3. 如果您感到危险,则可以假定所有演出者都有流派,所有用户都有个人资料。然后使用$exists选择该类型。

第一种选择是通常的方法。您应该具有执行#2或#3的特定原因,因为它们可能会变慢。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在带有库mgo的golang中使用$ facet?

使用mgo对mongoDB中的嵌入式文档进行部分更新

如何在Gogo的MGO mongo db驱动程序中获取我的文档的ObjectId(_id)

Mgo如何在嵌套数组中查找嵌套文档?

如何在golang mgo.v2中使用MongoDB获得汇总Pipline结果

如何使用mgo从golang的mongodb集合中选择所有记录

如何在mgo(Go)中将接口类型用作模型?

如何在Go和mgo中使用mongodb投影?

mgo,mongodb:从嵌入式结构中查找与一个字段匹配的文档

mgo,mongodb:查找一个嵌入式文档,该文档是数组的一部分

使用golang和mgo,如何在MongoDB中搜索一系列值?

如何在mongoDB中的嵌入式文档中提取特定元素

如何在mongodb中搜索嵌入式文档?

如何在嵌入式文档中查找某个元素

如何在嵌入式表单集中选择字段时填充相关字段

如何在javaScript中选择具有相同类名的所有类?

如何在mongodb中使用node.js删除嵌入式(嵌套)文档

如何在嵌入式数组mongodb中查询嵌入式文档

我如何在mongodb的更新操作中使用变量,该更新操作涉及数组或其他类型的嵌入式或嵌套文档?

如何打开(并保存)Word文档中的所有嵌入式文档?

如何在MongoDB中使用数组获取嵌入式文档(使用Mongoose)

如何在mongoDB中的多对多关系中使用嵌入式文档结构?

如何选择嵌入式文档列表作为根元素

如何在MongoDB中的嵌入式文档中获得同一级别的所有字段

如何在MongoDB中查询数组中的单个嵌入式文档?

与数组比较,如何在mongodb中检索部分嵌入式文档?

如何在Meteor中循环浏览嵌入式文档

如何从MONGO文档中的嵌入式数组中选取多个元素

如何将现有的子文档推送到MongoDB中的嵌入式数组中?

TOP 榜单

热门标签

归档