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

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

Mongo-go如何使用arrayFilter在“對(duì)象數(shù)組內(nèi)的對(duì)象數(shù)組”中查找元素

Mongo-go如何使用arrayFilter在“對(duì)象數(shù)組內(nèi)的對(duì)象數(shù)組”中查找元素

Go
慕虎7371278 2023-06-19 16:56:19
讓我們想象一個(gè)像這樣的 JSON:"user": {  "id": "1234",  ...some fields,  "achievements": [    {      "scope": "life achievements",      "list": [        {"_id": 1, "title": "some text", "gotAt": "some date"},        {"_id": 2, "title": "some other text", "gotAt": "some date"}      ]    },    {      "scope": "sport achievements",      "list": [        {"_id": 1, "title": "sport", "gotAt": "some date"},        {"_id": 2, "title": "some other sport", "gotAt": "some date"}      ]    },    {      "scope": "academic achievements",      "list": [        {"_id": 1, "title": "some text", "gotAt": "some date"},        {"_id": 2, "title": "some other text", "gotAt": "some date"}      ]    },  ]}例如,我需要使用 mongoDb 和 Golang 驅(qū)動(dòng)程序 Mongo-go 更新第一個(gè)人生成就(id 為 1)問(wèn)題出在嵌套級(jí)別。我可以通過(guò) $ mongoDb 運(yùn)算符獲取一些數(shù)組元素,但在這里我需要通過(guò)活動(dòng)范圍(生活、運(yùn)動(dòng)、學(xué)術(shù)等)和成就的 _id 字段來(lái)識(shí)別每個(gè)用戶(hù)成就。所以我需要在其他對(duì)象數(shù)組中的對(duì)象數(shù)組中進(jìn)行搜索。這就是我所做的(無(wú)論如何它都不起作用)doc := coll.FindOneAndUpdate(        context.Background(),        bson.D{            {"_id", "1234"},            {"achievements.scope", "life achievements"},            {"achievements.list._id", 1},        },        bson.D{            {"$set", bson.D{                {"achievements.$.list.$[elem].title", "some new test"},            }},        },        options.FindOneAndUpdate().SetArrayFilters(options.ArrayFilters{            Filters: append(make([]interface{}, 0), bson.D{                {"elem", bson.D{                    {"achievements.list._id", 1},                }},            }),        }).SetReturnDocument(1),    )我希望此查詢(xún)僅更新“id”和“scope”字段指定的一個(gè)元素??赡苁俏也徽_地使用了 arrayFilters,也可能是我錯(cuò)誤地設(shè)置了 FindOneAndUpdate 函數(shù)的參數(shù)。現(xiàn)在它不會(huì)拋出任何錯(cuò)誤,也不會(huì)更新文檔。請(qǐng)幫我
查看完整描述

2 回答

?
largeQ

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

有了這個(gè)包,go.mongodb.org/mongo-driver/mongo你可以這樣做:


coll.FindOneAndUpdate(

    context.Background(),

    bson.D{

        {"id", "1234"},

        {"achievements.scope", "life achievements"},

        {"achievements.list._id", 1},

    },

    bson.M{"$set": bson.M{"achievements.$.list.$[elem].title": "some new test"}},

    options.FindOneAndUpdate().SetArrayFilters(options.ArrayFilters{

        Filters: []interface{}{bson.M{"elem._id": 1}},

    }),

)

將其“翻譯”為 shell:


db.user.findOneAndUpdate(

  {"id": "1234","achievements.scope": "life achievements","achievements.list._id": 1},

  {$set: {"achievements.$.list.$[elem].title": "some new test"}},

  {arrayFilters: [{"elem._id": 1}]}

)


查看完整回答
反對(duì) 回復(fù) 2023-06-19
?
犯罪嫌疑人X

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

doc := coll.FindOneAndUpdate(

? ? ? ? context.Background(),

? ? ? ? bson.D{

? ? ? ? ? ? {"_id", "1234"},

? ? ? ? ? ? {"achievements.scope", "life achievements"},

? ? ? ? },

? ? ? ? bson.D{

? ? ? ? ? ? {"$set", bson.D{

? ? ? ? ? ? ? ? {"achievements.$.list.$[elem].title", "some new text"},

? ? ? ? ? ? }},

? ? ? ? },

? ? ? ? options.FindOneAndUpdate().SetArrayFilters(options.ArrayFilters{

? ? ? ? ? ? Filters: []interface{}{bson.D{

? ? ? ? ? ? ? ? ? ? {"elem._id", 1},

? ? ? ? ? ? ? ? }},

? ? ? ? }).SetReturnDocument(1),

? ? )


查看完整回答
反對(duì) 回復(fù) 2023-06-19
  • 2 回答
  • 0 關(guān)注
  • 168 瀏覽
慕課專(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)