0

文字列の配列から単一のアイテムを更新/置換しようとしています。どうすればmongodbでそれを行うことができますか?

mongodb バージョン >= 4、mongoose >= 5、および nodejs >= v12.2.0 を使用してみました。

これは私の更新です:

{
          _id: bot._id,
          intents: {
            $elemMatch: {
              name: "car",
              examples: "blue",
            },
          },
        },
        {
          $set: { 'intents.$[outer].examples.$[inner]': "yellow" },
        },
        {
          arrayFilters: [
            { 'outer.name': "car" },
            { 'inner.examples': "blue" },
          ],
        },

これは単一の文書です:

{
        "_id" : ObjectId("5cff64bacea5f52b74cefd57"),
        "name" : "a",
        "language" : "en",
        "userId" : "auth0|5ce2ce9fb0ada80ea32d7643",
        "cloudBotId" : "4327a229-ec34-423e-b9ad-4778cf74b0a0",
        "intents" : [
                {
                        "examples" : [
                                "blue"
                        ],
                        "name" : "car"
                },
                {
                        "examples" : [
                                "red"
                        ],
                        "name" : "bike"
                }
        ],
        "__v" : 0
}

「青」を「黄色」に置き換えることを期待しています。

4

1 に答える 1

0

あなたはちょうど近くにいました...あなたのarrayFiltersに例を追加する必要はありません.innerを使用するだけです:

        {
          _id: bot._id,
          intents: {
            $elemMatch: {
              name: "car",
              examples: "blue",
            },
          },
        },
        {
          $set: { 'intents.$[outer].examples.$[inner]': "yellow" },
        },
        {
          arrayFilters: [
            { 'outer.name': "car" },
            { 'inner': "blue" },
          ],
        }
于 2019-06-11T11:52:51.737 に答える