【问题标题】:How to create a RegExp for node/mongo that will find data that DOESN'T contain the RegExp如何为 node/mongo 创建一个 RegExp 来查找不包含 RegExp 的数据
【发布时间】:2018-06-13 08:36:01
【问题描述】:

我想用RegExp 搜索一个mongo 数据库,但我不想返回匹配RegExp 的数据,而是想返回没有RegExp 的数据。

例如:

查找所有不包含new RegExp("mediaType") 的数据。

我对 RegExp 的了解真的很差,所以我不知道该怎么做。

【问题讨论】:

  • 我遇到了这种模式^((?!badword).)*$。我无法解释,因此我将其作为评论留下。
  • @Mikey 是一个tempered greedy token。它匹配任何字符.,直到找到badword,然后停止。
  • @ctwheels 知道了!
  • @ctwheels 可以用吗?
  • @TaylorAustin 可以使用,但我确信有更好的方法。不幸的是,我对 mongodb 不太熟悉,所以我的帮助有限。 This question 包含您想要完成的相关信息

标签: javascript node.js regex mongodb


【解决方案1】:

要查找与正则表达式匹配的元素(例如 pattern),您可以使用:

db.coll.find({ fieldName: { $regex: /pattern/ } });

要查找与您可以使用的相同正则表达式不匹配的元素:

db.coll.find({ fieldName: { $not: /pattern/ } });

【讨论】:

  • 那么db.coll.find({ description: {$not: /mediaType/ }) 会找到我所有描述不包含"mediaType" 的数据吗?
  • @TaylorAustin 您应该可以使用/mediaType/,但您可能想改用/^.*mediaType/(不确定哪个效果更好 - 取决于您的数据)
  • @TaylorAustin ^ 将模式锚定到行首,.* 匹配任何字符(换行符 \n 除外)任意次数。但你也应该能够使用mediaType
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-17
  • 2014-08-16
  • 1970-01-01
  • 1970-01-01
  • 2013-12-24
  • 1970-01-01
  • 2011-12-23
相关资源
最近更新 更多