在这里,我要查询一个根据parent
绑定数据的查询。我收到以下对象:
{
"_id" : 1,
"name" : "home",
"slug" : "home",
"parent" : 0,
"description" : "this will direct you on home page",
"order" : 1,
"taxonomy" : "nav_bar"
}
{
"_id" : 2,
"name" : "Links",
"slug" : "links",
"parent" : 0,
"description" : "this will direct you on home page",
"order" : 2,
"taxonomy" : "nav_bar"
}
{
"_id" : 3,
"name" : "Link1",
"slug" : "link1",
"parent" : 2,
"description" : "this will direct you on home page",
"order" : 1,
"taxonomy" : "nav_bar"
}
{
"_id" : 4,
"name" : "Link2",
"slug" : "link2",
"parent" : 2,
"description" : "this will direct you on home page",
"order" : 2,
"taxonomy" : "nav-bar"
}
{
"_id" : 5,
"name" : "extra Link",
"slug" : "extra-link",
"parent" : 0,
"description" : "this will direct you on home page",
"order" : 3,
"taxonomy" : "nav-bar"
}
{
"_id" : 6,
"name" : "extra Link1",
"slug" : "extra-link1",
"parent" : 5,
"description" : "this will direct you on home page",
"order" : 1,
"taxonomy" : "nav-bar"
}
{
"_id" : 7,
"name" : "extra Link2",
"slug" : "extra-link2",
"parent" : 5,
"description" : "this will direct you on home page",
"order" : 2,
"taxonomy" : "nav-bar"
}
我将如何使用golang根据parent
字段和order
字段按照排序顺序并遵循子父层次结构来检索此数据。现在,我只是使用db.CollectionName.find().pretty()
检索所有数据。但是,现在我必须按顺序字段以及父子层次结构对此进行排序。
我在mongodb shell中尝试了以下查询:-
db.CollectionName.find().pretty()
它将向我显示完整数据。但是例如,我需要记录首先具有_id:1, parent:0, order:1
,然后将其显示在顶部,并记录第二具有_id:2, parent:0, order:2
,其将显示在第二,第三记录中它将具有_id:3, parent:2, order:1
,然后将显示仅次于记录,因为其父级是_id:2
,排在第二位。
答案 0 :(得分:0)
希望我能理解你的问题。
我认为您正在尝试执行以下操作。
当您说“绑定数据”时,可能意味着对数据结构进行了编组。为此,您将需要一个结构来支持您的数据。这是从JSON-to-Go自动生成的建议:
type Obj struct {
ID int `json:"_id"`
Name string `json:"name"`
Slug string `json:"slug"`
Parent int `json:"parent"`
Description string `json:"description"`
Order int `json:"order"`
Taxonomy string `json:"taxonomy"`
}
您可能想将结构重命名为比“ Obj”更好的名称。
要取消编组,请获取JSON并将其设置为字符串,例如s
。
创建一个包含对象的数组
var obj []Obj
并执行类似的操作:
err := json.Unmarshal([]byte(s), &obj)
之后,您可以按照自己的喜好对其进行排序。
这是Go文档排序的链接。 https://golang.org/pkg/sort/