mongo
我有一个包含在shell中列出的索引的集合:
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "test.books"
},
{
"v" : 2,
"unique" : true,
"key" : {
"author" : 1,
"title" : 1
},
"name" : "author_1_title_1",
"ns" : "test.books"
}
]
使用golang列出的相同索引:
collection := client.Database("test").Collection("books")
indexView := collection.Indexes()
opts := options.ListIndexes().SetMaxTime(2 * time.Second)
cursor, err := indexView.List(context.TODO(), opts)
if err != nil {
log.Fatal(err)
}
var result []bson.M
if err = cursor.All(context.TODO(), &result); err != nil {
log.Fatal(err)
}
for _, v := range result {
for k1, v1 := range v {
fmt.Printf("%v: %v\n", k1, v1)
}
fmt.Println()
}
输出是:
v: 2
key: map[_id:1]
name: _id_
ns: test.books
v: 2
unique: true
key: map[author:1 title:1]
name: author_1_title_1
ns: test.books
[ 编辑添加 ] 这是略有不同的版本result
循环,地图打印为键值:
for _, v := range result {
for k1, v1 := range v {
if reflect.ValueOf(v1).Kind() == reflect.Map {
v1a := v1.(primitive.M)
fmt.Printf("%v: {\n", k1)
for k2, v2 := range v1a {
fmt.Printf(" %v: %v\n", k2, v2)
}
fmt.Printf("}\n")
} else {
fmt.Printf("%v: %v\n", k1, v1)
}
}
fmt.Println()
}
输出:
key: {
_id: 1
}
name: _id_
ns: test.books
v: 2
v: 2
unique: true
key: {
title: 1
author: 1
}
name: author_1_title_1
ns: test.books