Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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 shard群集中的特定/目标shard_Mongodb_Mongoimport - Fatal编程技术网

Mongodb 将文档导入Mongo shard群集中的特定/目标shard

Mongodb 将文档导入Mongo shard群集中的特定/目标shard,mongodb,mongoimport,Mongodb,Mongoimport,我是MongoDB新手,但是我已经设置了一个包含3个副本集的碎片集群。每个副本集有2个mongod实例。我有一个单独的配置服务器和一个mongos实例 我想尝试在集合未启用碎片的情况下,是否可以将文档导入特定/目标碎片。(据我所知,我们无法控制通过mongos实例导入时,集合将保存在哪个碎片中) 因此,我使用下面的命令导入了文档,并且导入成功(遵循) mongoimport--db NormalTestDB--collection TestDams--host/,--jsonArray--fil

我是MongoDB新手,但是我已经设置了一个包含3个副本集的碎片集群。每个副本集有2个mongod实例。我有一个单独的配置服务器和一个mongos实例

我想尝试在集合未启用碎片的情况下,是否可以将文档导入特定/目标碎片。(据我所知,我们无法控制通过mongos实例导入时,集合将保存在哪个碎片中)

因此,我使用下面的命令导入了文档,并且导入成功(遵循)

mongoimport--db NormalTestDB--collection TestDams--host/,--jsonArray--file“”
(我在
中使用了特定的副本集名称)

现在,当我在MongosShell中尝试这个简单的查询
db.TestDams.find().count()
(通过连接到NormalTestDB),它返回0。但是,如果我通过直接连接到相关复制集的主节点来尝试相同的查询,则得到14603

有什么方法可以同步吗?或者有没有一种方法可以使用
mongoimport
针对特定的碎片???

(旁白:副本集中通常应该有3个节点,而不是2个节点。)

当您可以指定主分片时。未分片的集合将存储在该分片上。因此,您可以为每个分片定义一个数据库,并将每个数据库配置为具有不同的分片作为主分片

或者,如果进行了设置,则可以指定要在每个分片上存储哪些分片键值。然后通过插入适当的值,将数据存储在所需的碎片上


您应该通过一个
mongos
节点在分片集群上执行所有操作,而不是像您直接写入分片
mongod
s那样。谢谢。但是,我使用的是MongoDB 3.6,定义主切分的选项似乎在MongoDB 4.2.2(和4.0.14)之后的版本中可用。另外,我需要在同一个数据库中拥有集合。很抱歉在问题中没有提到这一点。此外,尽管文档中的数据略有不同,但很可能所有集合都具有相同的切分键(例如,_id)。因此,使用区域切分。而_id通常是切分键的糟糕选择。
mongoimport --db NormalTestDB --collection TestDams --host <replSetName>/<hostname1><:port>,<hostname2><:port> --jsonArray --file “<path_to_json>”