0

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

我想找到 _id 都是数字字符串的所有记录。我的意思是像“3434349898”这样的字符串

这可以通过查询来完成吗?

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

如果这不能通过一个查询来完成,那么在循环中删除这些记录的最佳查询是什么?可能有大约 50 万条或符合这种条件的记录,我们大约有 1.5 万条记录。

4

1 回答 1

5

由于 of 的类型_id是字符串,因此您可以使用正则表达式来删除 id 为仅包含数字的字符串的文档,如下所示:

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

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

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

于 2013-09-17T22:37:36.470 回答