首頁 >後端開發 >Golang >如何使用 go mongo-driver db.getUser()

如何使用 go mongo-driver db.getUser()

WBOY
WBOY轉載
2024-02-08 22:24:24868瀏覽

如何使用 go mongo-driver db.getUser()

php小編柚子將為大家介紹如何使用go mongo-driver中的db.getUser()方法。在使用MongoDB資料庫時,getUser()方法是一個非常實用的功能,可以用來取得指定使用者的詳細資料。透過本文的指導,您將學會如何正確使用這個方法,並獲得所需的使用者資訊。閱讀本文,讓我們一起來探索這個有用的功能吧!

問題內容

我想使用 go 驅動程式取得資料庫的使用者詳細資料。

例如。在 mongoshell 中

> db.getuser("testuser")
null

我如何為此建構 bson.m 或 bson.d ?

我不想傳遞額外的參數,只是檢索資料庫的使用者資訊

var op bson.m
command := bson.d{{"getuser", 1}, {"username", "testuser"}}
err = clientinfo.database(db).runcommand(context.todo(), cmd).decode(&op)

我嘗試了類似上面的方法,但它回傳了以下錯誤:

(CommandNotFound) no such command: 'getUser'

我在這裡缺少什麼?

解決方法

database.runco​​mmand() 是為了方便呼叫mongodb的runco​​mmand()# 函數,即執行指定資料庫指令的帮助器>.

也就是說,您在 mongo shell 中呼叫的 getuser() 函數是一個函數,而不是一個指令。

但是有一個 usersinfo 指令可以取得相同的資料。其語法為:

db.runcommand(
   {
     usersinfo: <various>,
     showcredentials: <boolean>,
     showcustomdata: <boolean>,
     showprivileges: <boolean>,
     showauthenticationrestrictions: <boolean>,
     filter: <document>,
     comment: <any>
   }
)

這是執行 usersinfo 指令的方法:

var op bson.m
cmd := bson.d{{key: "usersinfo", value: bson.m{
    "user": "testuser",
    "db":   "admin",
}}}
err = clientinfo.database(db).runcommand(ctx, cmd).decode(&op)

請注意,usersinfo 文件具有 各種規格,例如:

{ usersinfo: 1 }

傳回有關執行該命令的資料庫中的使用者的資訊。 mongosh 為該指令的呼叫提供 db.getusers() 幫助程式。

{ usersinfo: <username> }

傳回有關執行該命令的資料庫中存在的特定使用者的資訊。 mongosh 為此指令的呼叫提供 db.getuser() 幫助程式。

{ usersinfo: { user: <name>, db: <db> } }

傳回有關由名稱和資料庫指定的使用者的資訊。

{ usersinfo: [ { user: <name>, db: <db> }, ... ] }
{ usersinfo: [ <username1>, ... ] }

傳回指定使用者的資訊。

{ foralldbs: true }

傳回有關所有資料庫中使用者的資訊。

如您所見,getuser() 指令是 { usersinfo: d6025a37ea8687b5422f951f7288bdc5 } 的簡寫,您可以這樣呼叫:

var op bson.m
cmd := bson.d{{key: "usersinfo", value: "testuser"}}
err = clientinfo.database(db).runcommand(ctx, cmd).decode(&op)

如果您想要有關多個使用者的信息,您當然可以使用陣列:

cmd := bson.D{{Key: "usersInfo", Value: []string{"testuser", "anotheruser"}}}

以上是如何使用 go mongo-driver db.getUser()的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除