为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
HUX布斯 2022-12-13 15:59:57
我有以下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”的实例。问题是尽管我进行了多次尝试,但没有进行任何更新。任何想法 ?
查看完整描述

1 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

UpdateOne好吧,我真的不明白为什么,但我设法通过用函数替换函数来使函数工作UpdateMany

这是纯粹的运气,任何解释将不胜感激。


查看完整回答
反对 回复 2022-12-13
  • 1 回答
  • 0 关注
  • 60 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信