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

构建包含字符串和正则表达式模式的 $in 数组

构建包含字符串和正则表达式模式的 $in 数组

Go
慕雪6442864 2023-06-05 17:03:36
我有一个 Mongo 集合,其中集合中的每个文档都有一个 sources 数组属性。对此属性的搜索可以是精确匹配和正则表达式的组合。例如,当使用 Mongo shell 时,下面的查询搜索源项中包含 source='gas valves' 或 'hose' 的文档。这正如我所料db.notice.find({sources:{$in:[/\bhose/i,'gas valves']}})在 mgo 中事情变得有点棘手。因为 $in 数组中的某些项目可以是正则表达式,而其他项目是字符串 - 我想进行查询的唯一方法是使用 $or:var regEx []bson.RegExvar matches []string// do stuff to populate regEx and matchesfilter["$or"] = []bson.M{    {"sources":bson.M{"$in":regEx}},    {"sources":bson.M{"$in":matches}},}有什么方法可以构建一个包含正则表达式和字符串的切片以与 $in 一起使用 - 消除对 $or 的需要
查看完整描述

1 回答

?
呼如林

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

使用[]interface{}:


matches := []interface{}{

    bson.RegEx{"jo.+", "i"},

    "David",

    "Jenna",

}


db.C("people").Find(bson.M{"name": bson.M{"$in": matches}})

[]表示切片,interface{}表示任何类型。放在一起,[]interface{}是任何类型的切片。


查看完整回答
反对 回复 2023-06-05
  • 1 回答
  • 0 关注
  • 54 浏览
慕课专栏
更多

添加回答

举报

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