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

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

Mongodb更新深層嵌套的子文檔

Mongodb更新深層嵌套的子文檔

蝴蝶不菲 2019-09-21 13:57:56
我有一個(gè)深層嵌套的文檔結(jié)構(gòu),如下所示:{id: 1,  forecasts: [ {              forecast_id: 123,              name: "Forecast 1",              levels: [                 { level: "proven",                   configs: [                            {                               config: "Custom 1",                              variables: [{ x: 1, y:2, z:3}]                            },                             {                               config: "Custom 2",                              variables: [{ x: 10, y:20, z:30}]                            },                     ]                },                 { level: "likely",                   configs: [                            {                               config: "Custom 1",                              variables: [{ x: 1, y:2, z:3}]                            },                             {                               config: "Custom 2",                              variables: [{ x: 10, y:20, z:30}]                            },                     ]                }            ]        },     ]}我正在嘗試更新集合以插入新的配置,如下所示:newdata =  {  config: "Custom 1",   variables: [{ x: 111, y:2222, z:3333}]}我正在mongo中嘗試這樣的事情(在Python中):db.myCollection.update({"id": 1,                         "forecasts.forecast-id": 123,                         "forecasts.levels.level": "proven",                         "forecasts.levels.configs.config": "Custom 1"                         },                         {"$set": {"forecasts.$.levels.$.configs.$": newData}}                      )我收到“無法在沒有包含數(shù)組的相應(yīng)查詢字段的情況下應(yīng)用位置運(yùn)算符”錯(cuò)誤。在mongo中執(zhí)行此操作的正確方法是什么?這是mongo v2.4.1。
查看完整描述

3 回答

?
溫溫醬

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

不幸的是,$每個(gè)鍵不能多次使用運(yùn)算符,因此其余部分必須使用數(shù)字值。如:


db.myCollection.update({

    "id": 1, 

    "forecasts.forecast-id": 123, 

    "forecasts.levels.level": "proven", 

    "forecasts.levels.configs.config": "Custom 1"

  },

  {"$set": {"forecasts.$.levels.0.configs.0": newData}}

)

MongoDB對更新嵌套數(shù)組的支持很差。因此,如果您需要經(jīng)常更新數(shù)據(jù),則最好避免使用它們,并考慮改用多個(gè)集合。


一種可能:創(chuàng)建forecasts自己的集合,并假設(shè)您具有一組固定的level值,則創(chuàng)建level一個(gè)對象而不是一個(gè)數(shù)組:


{

  _id: 123,

  parentId: 1,

  name: "Forecast 1", 

  levels: {

    proven: { 

      configs: [

        { 

          config: "Custom 1",

          variables: [{ x: 1, y:2, z:3}]

        }, 

        { 

          config: "Custom 2",

          variables: [{ x: 10, y:20, z:30}]

        }, 

      ]

    },

    likely: {

      configs: [

        { 

          config: "Custom 1",

          variables: [{ x: 1, y:2, z:3}]

        }, 

        { 

          config: "Custom 2",

          variables: [{ x: 10, y:20, z:30}]

        }, 

      ]

    }

  }

}

然后,您可以使用以下命令進(jìn)行更新:


db.myCollection.update({

    _id: 123,

    'levels.proven.configs.config': 'Custom 1'

  },

  { $set: { 'levels.proven.configs.$': newData }}

)


查看完整回答
反對 回復(fù) 2019-09-21
  • 3 回答
  • 0 關(guān)注
  • 2085 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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