如何在mgo Mongodb中选择相同类型的所有嵌入文档?
我有一个使用mgo/mongodb的go应用程序。我使用的是嵌入式文档,而不是关系文档 所以我。。。(一些代码是为了简洁而编辑的)如何在mgo Mongodb中选择相同类型的所有嵌入文档?,mongodb,go,mgo,Mongodb,Go,Mgo,我有一个使用mgo/mongodb的go应用程序。我使用的是嵌入式文档,而不是关系文档 所以我。。。(一些代码是为了简洁而编辑的) 我试图从所有的用户那里得到所有的艺术家。但我不知道我的查询需要什么?我简要地谈到了Map/Reduce,但它似乎不适用于我正在尝试做的事情 我想你是在假设mgo是一个“”。但这只是在Mongo中存储数据的一种简单方法。有3种不同的方法可以解决您的问题: 将不同的类型放入不同的集合中。这样,每个文档都是相同的类型。(集合就像关系数据库中的“表”) 用对象的类型标记每个
我试图从所有的用户那里得到所有的艺术家。但我不知道我的查询需要什么?我简要地谈到了Map/Reduce,但它似乎不适用于我正在尝试做的事情 我想你是在假设mgo是一个“”。但这只是在Mongo中存储数据的一种简单方法。有3种不同的方法可以解决您的问题:
$exists
仅选择该类型第一种选择是通常的方法。你应该有具体的理由去做第2或第3步,因为它们可能会慢一些。谢谢你的回复!例如,将我们的用户和艺术家分成两个独立的集合?但是我该如何将用户链接到用户?您可以存储一个对象ID数组,并简单地记住查询其他集合。使用Go mgo库有没有推荐的方法?或者只是手动创建一个新文档,获取ID,然后更新父文档并将ID推送到数组中?谢谢你的帮助!后者。存在处理父/子关系的ORM。但是使用ORM是一种复杂的权衡。
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
}