删除匹配"此文本"的条目来自MongoDB

时间:2016-01-18 01:31:08

标签: javascript regex node.js mongodb mongoose

好的,我已经搜索过,搜索过,而且我还没有找到办法让这项工作成功。这就是我所拥有的:

我正在使用node / express / socketio等中的聊天应用程序。我正在努力创建一个清除'用于根据指定的输入从MongoDB中删除某个聊天消息。例如:

/clear badword
/clear heck
/clear Barbara Streisand

我正在努力创建一个合适的RegEx,它实际上会找到包含指定文本的条目。

这是我目前正在使用的内容:

Chat.remove({"msg":{$regex: new RegExp('.*' + myInput, 'i')}});

它似乎找不到任何东西。注意:指定的文本可以在聊天消息中的任何位置,因此我需要能够说:

如果msg键中的任何位置存在<this text>,请将其删除。

我几个小时以来一直在查看RegEx文档,但我无法使其工作。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:3)

您需要为remove调用提供回调,或者在它返回的查询对象上调用exec以实际执行删除操作。

所以:

Chat.remove({"msg":{$regex: new RegExp('.*' + myInput, 'i')}}, (err) => {...});

或者

Chat.remove({"msg":{$regex: new RegExp('.*' + myInput, 'i')}}).exec();

关于正则表达式的一个注意事项:您不需要添加'.*'前缀。