用$和条件创建过滤器,SQL到golang过滤器转换器



我目前有一个正在工作的过滤器。DeleteMany。它删除给定数组中_id所在的所有条目vids

filter := bson.D{{Key: "_id", Value: bson.D{{Key: "$in", Value: vids}}}}
res, err := DB.Collection("data").DeleteMany(context.TODO(), filter)

现在我想增强过滤器,并添加一些$和条件,以仅删除_id在给定数组vids中并且(!(providerid的值为1234时的条目。

遗憾的是,我一直纠结于如何在围棋中做到这一点。对我来说,读写这样的过滤器是非常困难的。尤其是有这么多bson。D、 bson。M和[]bson。D和许多花括号等

在SQL中,我会写DELETE FROM数据WHERE _id In({list}(AND providerid=1234

有SQL到golangmongodb的过滤器转换器吗?

尝试

filter := bson.D{
{ "$and", []interface{}{
bson.D{{ Key: "_id", Value: bson.D{{ Key: "$in", Value: vids }}}},
bson.D{{ "providerid", 123}},
}},
}

根据@VolkerSchmid评论

filter := bson.D{ { Key: "$and", Value: []interface{}{ bson.D{{ Key: "_id", Value: bson.D{{ Key: "$in", Value: vids }}}}, bson.D{{ Key: "providerid", Value: 123}}, }}, }

最新更新