Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 如何从mongo集合导出所需数量的文档_Mongodb_Mongodb Query - Fatal编程技术网

Mongodb 如何从mongo集合导出所需数量的文档

Mongodb 如何从mongo集合导出所需数量的文档,mongodb,mongodb-query,Mongodb,Mongodb Query,我知道我们可以把mongo的一堆垃圾收集起来。我想知道是否有可能只从mongo集合中转储所需数量的文档。我的目录集合有数十万个文档,但是我只需要最近的2000个文档作为同步转储。是的,您可以使用--query选项限制集合中的文档数。在查询中,您可以按创建日期对文档进行排序(因为您只想要最近的文档,所以文档中必须有一个类似的字段,不要尝试按_id排序,因为在某些情况下,ObjectId值并不表示严格的插入顺序)并且使用查询将文档限制为2000 但是,mongodump--query不直接支持排序和

我知道我们可以把mongo的一堆垃圾收集起来。我想知道是否有可能只从mongo集合中转储所需数量的文档。我的目录集合有数十万个文档,但是我只需要最近的2000个文档作为同步转储。

是的,您可以使用
--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()
,这使得这一点变得更加容易。