如何使用“like”查询 MongoDB

新手上路,请多包涵

我想用 SQL 的 like 查询一些东西:

 SELECT * FROM users  WHERE name LIKE '%m%'

如何在 MongoDB 中实现相同的目标?我在 文档 中找不到 like 的运算符。

原文由 Freewind 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 579
2 个回答

那必须是:

 db.users.find({"name": /.*m.*/})

或者,类似的:

 db.users.find({"name": /m/})

您正在寻找某处包含“m”的东西(SQL 的 ‘ % ’ 运算符等同于正则表达式 ‘ ’ .* ‘),而不是锚定有“m”的东西字符串的开头。

注意: MongoDB 使用的正则表达式比 SQL 中的“LIKE”更强大。使用正则表达式,您可以创建您想象的任何模式。

有关正则表达式的更多信息,请参阅 _正则表达式_(MDN)。

原文由 Kyle H 发布,翻译遵循 CC BY-SA 4.0 许可协议

在 MongoDb 中,可以像使用 MongoDb 引用运算符正则表达式(regex) 一样使用。

对于相同的前。

 MySQL - SELECT * FROM users  WHERE name LIKE '%m%'

MongoDb

    1) db.users.find({ "name": { "$regex": "m", "$options": "i" } })

    2) db.users.find({ "name": { $regex: new RegExp("m", 'i') } })

    3) db.users.find({ "name": { $regex:/m/i } })

    4) db.users.find({ "name": /mail/ })

    5) db.users.find({ "name": /.*m.*/ })

MySQL - SELECT * FROM users  WHERE name LIKE 'm%'

MongoDb Any of Above with /^String/

    6) db.users.find({ "name": /^m/ })

MySQL - SELECT * FROM users  WHERE name LIKE '%m'

MongoDb Any of Above with /String$/

    7) db.users.find({ "name": /m$/ })

原文由 Sahil Thummar 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进