如何从单个集合中删除超过一定限制的文档

问题描述:

我正在用MongoDB集合取代一个大的MySQL连接表。在旧的MySQL表上执行的查询之一是限制某个键的记录数量(在LIMIT ORDER BY记录集上的排他性连接)。但在MongoDB中如何做到这一点?如何从单个集合中删除超过一定限制的文档

非常感谢提前!

+1

你能解释一下吗?基本上,你想只允许100个'somefield = 1'的文件,另外100个'somefield = 2'? – Jesta 2013-05-18 02:47:50

+0

的确,这就是我们想要的...... – Pepster 2013-05-21 07:19:23

您可以使用sort({key:1})通过(使用-1而不是1作为降序)和limit(N)来将返回结果限制为N个文档。

相反,如果你想获得的所有除非你将使用前N个文件:

db.collection.find({user:"X"}).sort({key:-1}).skip(1000) 

这将返回除非键排序的前1000名的所有文件。

+0

是的,但是您可以查询并删除服务器端的多余记录吗?您询问了有关限制查询的 – Pepster 2013-05-21 07:20:24

+0

。 “删除过多记录”是什么意思? – 2013-05-21 12:47:14

+0

这是关于删除'休息'。例如,如果我们假设一个关于user_id和image_id的复合索引的集合,考虑我只想为每个用户保留1000条记录。 – Pepster 2013-05-22 14:20:52