Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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
通过mongos和javascript插入数据_Javascript_Mongodb - Fatal编程技术网

通过mongos和javascript插入数据

通过mongos和javascript插入数据,javascript,mongodb,Javascript,Mongodb,我想通过mongos执行一个java脚本文件,以便将数据插入我的切分集。除此之外,我还想添加一个动态变量和空值- 我将通过以下方式(手动)登录到shell mongo hostip:port/admin my_script.js 我的js看起来像: 风险价值金额=1000000; var x=1; var-doc='' for(i=0;i您不需要保留多个计数器-因为您在for循环的每次迭代中递增i。因为您想要值而不是字符串,所以使用i作为d和null的值,而不是字符串“null”-以下是清理后的

我想通过mongos执行一个java脚本文件,以便将数据插入我的切分集。除此之外,我还想添加一个动态变量和空值-

我将通过以下方式(手动)登录到shell

mongo hostip:port/admin my_script.js

我的js看起来像:

风险价值金额=1000000; var x=1; var-doc=''


for(i=0;i您不需要保留多个计数器-因为您在for循环的每次迭代中递增
i
。因为您想要值而不是字符串,所以使用
i
作为
d
null
的值,而不是字符串
“null”
-以下是清理后的循环:

var amount = 1000000;
for (i=1; i<amount+1; i++) {
  doc = { a: '1', b: '2', c: 'text' , d:  i, e: null }
  db.mycol.insert(doc);
}
var金额=1000000;
对于(i=1;i),我需要尝试并确保在加载数据时保持平衡。如果碎片键像时间戳一样增加,则很可能一个碎片会变热,并且它将始终处于范围的顶端,并且必须拆分块并将数据迁移到其他碎片

在MongoDB UK上,有几场关于切分的精彩演讲:和

更新:

关于碎片平衡需要多长时间-这取决于您机器上的负载。平衡是一个轻量级过程,因此应将其视为后台操作。需要注意的是,即使使用碎片系统,只要数据写入
mongos
,也可以对其进行查询。因此,如果碎片在数据加载过程中变得不平衡,那么数据仍然是可访问的-重新平衡碎片可能需要时间-这取决于碎片的加载和新数据的添加,这意味着在迁移之前需要分割块

更新2

mongos
的插入是同步的,因此运行脚本所需的时间就是应用插入所需的时间。关于写入的持久性,还有其他选项,基本上使用写入时的阻止时间。shell调用
getLastError()
透明,但默认情况下是异步的,而不是等待服务器响应


javascript文件存储在哪里?-这取决于你-它是你的应用程序代码。大多数用户会用他们喜欢的语言编写应用程序,并使用驱动程序调用mongodb。

你不需要保留多个计数器-因为你在for循环的每次迭代中都会增加
i
。因为你想要的是值,而不是str将
i
用于
d
null
的值,而不是字符串
“null”
-以下是已清理的循环:

var amount = 1000000;
for (i=1; i<amount+1; i++) {
  doc = { a: '1', b: '2', c: 'text' , d:  i, e: null }
  db.mycol.insert(doc);
}
var金额=1000000;
对于(i=1;i),我需要尝试并确保在加载数据时保持平衡。如果碎片键像时间戳一样增加,则很可能一个碎片会变热,并且它将始终处于范围的顶端,并且必须拆分块并将数据迁移到其他碎片

在MongoDB UK上,有几场关于切分的精彩演讲:和

更新:

关于碎片平衡需要多长时间-这取决于您机器上的负载。平衡是一个轻量级过程,因此应将其视为后台操作。需要注意的是,即使使用碎片系统,只要数据写入
mongos
,也可以对其进行查询。因此,如果碎片在数据加载过程中变得不平衡,那么数据仍然是可访问的-重新平衡碎片可能需要时间-这取决于碎片的加载和新数据的添加,这意味着在迁移之前需要分割块

更新2

mongos
的插入是同步的,因此运行脚本所需的时间就是应用插入所需的时间。关于写入的持久性,还有其他选项,基本上使用写入时的阻止时间。shell调用
getLastError()
透明,但默认情况下是异步的,而不是等待服务器响应


在哪里存储javascript文件?-这取决于您-它是您的应用程序代码。大多数用户将使用他们喜欢的语言编写应用程序,并使用驱动程序调用mongodb。

如果您希望d为x变量的值,e为null,下面是您在javascript中的操作方式:
doc={a:'1',b:'2',c:'text',d:x,e:null};
你的意思是你的分片键是{d:'1}-如果是这样的话,你就不会得到平衡的写入分布,你的键总是在增加。如果你想让d成为x变量的值,而e为null,下面是你在javascript中的做法:
doc={a:'1',b:'2',c:'text',d:x,e:null};
你的意思是你的分片键是{“d”:1}-如果是这样,您将无法获得平衡的写入分布,您的密钥总是在增加。再次更新,希望这能为您澄清问题。这样更新问题可能会破坏stackoverflow礼仪!再次更新,希望这能为您澄清问题。这样更新问题可能会破坏stackoverflow礼仪!