是否可以使第二个Collection与第一个Collection完全相同,但是应用了limit
和sort
运算符?
如果第一个Collection有1000多条记录并且添加了新记录,则第二个Collection将包含所有新记录,但仅限于N个最新记录(按时间戳字段排序)。
这样做的原因是为了克服我的数据库驱动程序中没有实现sort
和limit
的限制。
答案 0 :(得分:1)
听起来你想要的是capped collection。
上限集合自动限制为固定数量的记录。当它们已满并添加新文档时,将删除最旧的文档。当您从集合中查询而没有显式排序时,所有记录都保证以插入顺序排列。最大的限制是,当增加其大小时,无法更新上限集合中的文档。
需要使用createCollection函数明确创建上限集合。此shell命令将创建一个限制为1000个文档的上限集合:
db.createCollection( "your_collection_name", { capped: true, size: 1000 } );
如果要将现有集合转换为上限集合,可以使用convertToCapped数据库命令:
db.runCommand({"convertToCapped": "your_existing_collection_name", size: 1000});