如何查找和删除仅包含数值的记录

时间:2013-09-17 19:46:08

标签: mongodb

我在Mongo有一个集合 假设集合名称是'发票' _id的值由脚本生成(不是默认的mongo ID对象) _id的类型是一个字符串。

我想查找_id是全数字字符串的所有记录。我的意思是字符串,如“3434349898”

这可以通过查询完成吗?

最终目标是我要删除所有此类记录(具有_id的数值)并仅保留非数字。所以“a234”或“4898c”应保留在集合中,但应删除仅包含数字字符的值。

如果一个查询无法做到这一点,那么在循环中删除这些记录的最佳查询是什么?可能有大约五十万或记录符合这一条件我们约为总记录的一百五十万。

1 个答案:

答案 0 :(得分:5)

由于_id的类型是一个字符串,您可以使用正则表达式来删除其ID是仅包含如下数字的字符串的文档:

db.coll.remove({"_id":/^[0-9]*$/})

其中“coll”是您要更新的集合的名称。

正则表达式使用_id字段的第一个字符,因此它可以使用索引并且应该非常快。如果要在删除文档之前先检查文档,可以在find()内使用相同的查询文档。