使用 $in 过滤器从多个数组中提取对象
$pull objects from multiple array with $in filter
我有以下 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”的实例。
问题是尽管我尝试了很多次,但没有更新。有什么想法吗?
好吧,我真的不明白为什么,但我设法通过用 UpdateMany
函数替换 UpdateOne
函数来使该函数工作。
这纯属幸运,如有任何解释,我们将不胜感激。
我有以下 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”的实例。
问题是尽管我尝试了很多次,但没有更新。有什么想法吗?
好吧,我真的不明白为什么,但我设法通过用 UpdateMany
函数替换 UpdateOne
函数来使该函数工作。
这纯属幸运,如有任何解释,我们将不胜感激。