好的,我已经搜索过,搜索过,而且我还没有找到办法让这项工作成功。这就是我所拥有的:
我正在使用node / express / socketio等中的聊天应用程序。我正在努力创建一个清除'用于根据指定的输入从MongoDB中删除某个聊天消息。例如:
/clear badword
/clear heck
/clear Barbara Streisand
我正在努力创建一个合适的RegEx,它实际上会找到包含指定文本的条目。
这是我目前正在使用的内容:
Chat.remove({"msg":{$regex: new RegExp('.*' + myInput, 'i')}});
它似乎找不到任何东西。注意:指定的文本可以在聊天消息中的任何位置,因此我需要能够说:
如果msg键中的任何位置存在<this text>
,请将其删除。
我几个小时以来一直在查看RegEx文档,但我无法使其工作。有人能指出我正确的方向吗?
答案 0 :(得分:3)
您需要为remove
调用提供回调,或者在它返回的查询对象上调用exec
以实际执行删除操作。
所以:
Chat.remove({"msg":{$regex: new RegExp('.*' + myInput, 'i')}}, (err) => {...});
或者
Chat.remove({"msg":{$regex: new RegExp('.*' + myInput, 'i')}}).exec();
关于正则表达式的一个注意事项:您不需要添加'.*'
前缀。