使用 $in 过滤器从多个数组中提取对象

我有以下user文件:


{

   "_id":{

      "$oid":"627cc1add375d47675b8104a"

   },

   "email":"camille.balzac@outlook.fr",

   "username":"camille.balzac",

   "password":"9394516cc9354d3ef1a37a88dfefc364182a80c59a147ba77b240ac78ca5e788",

   "salt":"xooRCeSUh9KVmGH",

   "isteacher":false,

   "instances":[

      {

         "instanceid":"i-0c7a14f4bebaxxxxx",

         "identifier":"t1u4sm2abyc3rdkhevrgs0tg5592idjp",

         "teacherid":{

            "$oid":"627cc1a9d375d47675b81049"

         }

      },

      {

         "instanceid":"i-0e4c61434a85xxxxx",

         "identifier":"pqqloehk4oeiy2ofh4d7tsn6j281wnbe",

         "teacherid":{

            "$oid":"627cc1a9d375d47675b81049"

         }

      }

   ]

}

我正在尝试构建一个 go 函数,该函数将删除instances其 id 在作为参数 ( ) 传递的切片中的所有实体instancesIds。现在它看起来像这样:


func DeleteInstancesById(instancesIds []string) error {

    res, err := usersCollection.UpdateOne(

        context.TODO(),

        bson.M{},

        bson.M{

            "$pull": bson.M{

                "instances": bson.M{

                    "instanceid": bson.M{

                        "$in": instancesIds,

                    },

                },

            },

        },

    )

}

例如,这意味着如果我这样调用函数:


DeleteInstancesById([]string{"i-0c7a14f4bebaxxxxx"})

它应该删除所有 ID 为“i-0c7a14f4bebaxxxxx”的实例。


问题是尽管我进行了多次尝试,但没有进行任何更新。任何想法 ?


HUX布斯
浏览 77回答 1
1回答

交互式爱情

UpdateOne好吧,我真的不明白为什么,但我设法通过用函数替换函数来使函数工作UpdateMany。这是纯粹的运气,任何解释将不胜感激。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go