第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用 go mongo-driver 運(yùn)行 Find().All() 的問(wèn)題

使用 go mongo-driver 運(yùn)行 Find().All() 的問(wèn)題

我是 mongoDB 的新手,目前我們正在嘗試將我們的舊 mgo 驅(qū)動(dòng)程序遷移到 go mongo-driver在我們的舊代碼中,我們使用來(lái)自全局標(biāo)志 mgo 驅(qū)動(dòng)程序的如下內(nèi)容//where apps is a structapps := []model.App{}err = mgo.Collection.Find(query).Skip(skipCount).Limit(MaxResults).Sort("-starttime").All(&apps)因此,對(duì)于新的 mongo-driver,我使用 Find 嘗試了類(lèi)似下面的方法,但是沒(méi)有用。    // Set FindOneOptions    findOpt := options.Find()    findOpt.SetSkip(int64(skipCount))    limitVal := appsbody.MaxResults    findOpt.SetLimit(int64(limitVal))    findOpt.SetSort("-starttime")    err = mgo.Collection.Find(query, findOpt).All(context.TODO(), &apps)在上面的代碼片段中,params 查詢(xún)的類(lèi)型是 map[string]interface{}。當(dāng)我嘗試記錄查詢(xún)時(shí),Key = type Value = dbuser兩者都是字符串類(lèi)型查詢(xún)值最初是通過(guò)使用傳遞的query := url.Values{},這種情況下查詢(xún)類(lèi)型將是map[string][]string我想后來(lái)它被通過(guò)了,因?yàn)閙ap[string]interface{}不確定這是否會(huì)導(dǎo)致這個(gè)問(wèn)題并且無(wú)法與正確的查詢(xún)格式混合params,所以我什至嘗試使用下面的代碼轉(zhuǎn)換它,但仍然沒(méi)有幫助我解決問(wèn)題。    //do a type conversion for the original query        q := make(map[string]interface{}, len(query))    for key, value := range query {        q[key] = value    }當(dāng)我嘗試運(yùn)行代碼時(shí),它無(wú)法執(zhí)行 Find 操作并且我得到以下錯(cuò)誤并拋出 nil 指針cannot transform type string to a BSON Document: WriteString can only write while positioned on a Element or Value but is positioned on a TopLevelpanic: runtime error: invalid memory address or nil pointer dereference        panic: runtime error: invalid memory address or nil pointer dereference        panic: runtime error: invalid memory address or nil pointer dereference[signal SIGSEGV: segmentation violation code=0x1 addr=0x40 pc=0x564171020634]goroutine 1 [running]:go.mongodb.org/mongo-driver/mongo.(*Cursor).closeImplicitSession(0x5641708ab4e0?)        go.mongodb.org/mongo-driver@v1.10.3/mongo/cursor.go:309 +0x14panic({0x5641716c9440, 0x56417200c2d0})        runtime/panic.go:884 +0x212go.mongodb.org/mongo-driver/mongo.(*Cursor).Close(0xa1?, {0x5641718f9c30?, 0xc00003a078?})        go.mongodb.org/mongo-driver@v1.10.3/mongo/cursor.go:222 +0x5fpanic({0x5641716c9440, 0x56417200c2d0})        runtime/panic.go:884 +0x212不確定我在這里犯了什么錯(cuò)誤,誰(shuí)能幫我解決這個(gè)問(wèn)題?
查看完整描述

1 回答

?
慕工程0101907

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊

問(wèn)題在于排序值。它必須是一個(gè)文檔,而不是一個(gè)簡(jiǎn)單的string. 它可以是一個(gè)映射,一個(gè)bson.M(它也是一個(gè)映射)或一個(gè)bson.D值(或任何其他“很好地”編組到 BSON 中的值,例如結(jié)構(gòu))。


如果您只使用單個(gè)字段進(jìn)行排序,最簡(jiǎn)單的是一個(gè)bson.M. 另請(qǐng)注意,可以鏈接對(duì)選項(xiàng)的方法調(diào)用(它們返回接收者):


findOpt := options.Find().

    SetSkip(int64(skipCount)).

    SetLimit(int64(appsbody.MaxResults)).

    SetSort(bson.M{"starttime": -1})

如果您有多個(gè)排序鍵,順序很重要,在這種情況下使用bson.D文檔(地圖是無(wú)序的,bson.D是鍵值對(duì)的有序列表):


findOpt := options.Find().

    SetSkip(int64(skipCount)).

    SetLimit(int64(appsbody.MaxResults)).

    SetSort(bson.D{{Key:"starttime", Value: -1}, {Key:"other", Value: 1}})


查看完整回答
反對(duì) 回復(fù) 2023-03-07
  • 1 回答
  • 0 關(guān)注
  • 127 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)