通过mongos和javascript插入数据
我想通过mongos执行一个java脚本文件,以便将数据插入我的切分集。除此之外,我还想添加一个动态变量和空值- 我将通过以下方式(手动)登录到shell mongo hostip:port/admin my_script.js 我的js看起来像: 风险价值金额=1000000; var x=1; var-doc=''通过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”-以下是清理后的
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礼仪!