Mongodb 如何从mongo集合导出所需数量的文档
我知道我们可以把mongo的一堆垃圾收集起来。我想知道是否有可能只从mongo集合中转储所需数量的文档。我的目录集合有数十万个文档,但是我只需要最近的2000个文档作为同步转储。是的,您可以使用Mongodb 如何从mongo集合导出所需数量的文档,mongodb,mongodb-query,Mongodb,Mongodb Query,我知道我们可以把mongo的一堆垃圾收集起来。我想知道是否有可能只从mongo集合中转储所需数量的文档。我的目录集合有数十万个文档,但是我只需要最近的2000个文档作为同步转储。是的,您可以使用--query选项限制集合中的文档数。在查询中,您可以按创建日期对文档进行排序(因为您只想要最近的文档,所以文档中必须有一个类似的字段,不要尝试按_id排序,因为在某些情况下,ObjectId值并不表示严格的插入顺序)并且使用查询将文档限制为2000 但是,mongodump--query不直接支持排序和
--query
选项限制集合中的文档数。在查询中,您可以按创建日期对文档进行排序(因为您只想要最近的文档,所以文档中必须有一个类似的字段,不要尝试按_id排序,因为在某些情况下,ObjectId值并不表示严格的插入顺序)并且使用查询将文档限制为2000
但是,mongodump--query
不直接支持排序和限制
操作。因此,您需要在查询中做一些变通
首先,您可以根据您的创建日期
按升序
排序
获取第2000条记录
,如下所示:
db.collection.find().sort({created_date:1}).skip(1999).limit(1)
这将为您提供第2000条记录。在该记录中,您还将具有created_date的值。现在使用该值
,您可以按以下方式运行mongodump:
mongodump --db <db-name> --collection <collection-name> --query '{"created_date":{$lte:{$date:<value-in-milliseconds>}}}'
mongodump --db <db-name> --collection <collection-name> --queryFile query.json
然后您可以将mongodump作为:
mongodump --db <db-name> --collection <collection-name> --query '{"created_date":{$lte:{$date:<value-in-milliseconds>}}}'
mongodump --db <db-name> --collection <collection-name> --queryFile query.json
mongodump--db--collection--queryFile query.json
有关更多信息,请参见mongoexport
现在支持--skip()
,--limit()
,--sort()
,这使得这一点变得更加容易。