Tag: bulkinsert

Meteor Mongo BulkOp将ObjectID转换为普通对象

在使用Meteor时,我有时会访问底层的Node Mongo驱动程序,所以我可以进行批量更新和插入。 const bulk = Coll.rawCollection().initializeOrderedBulkOp(); bulk.insert({key_id: Mongo.Collection.ObjectID()}); // note key_id is an ObjectID … bulk.execute(); 但是,当我在插入后查看数据库时, key_id字段的值最终成为普通的子文档{_str: '…'} 。 有什么方法可以在Node的Mongo库中使用批量操作(不pipe它是Meteor使用的),还是将ObjectID保留为Mongo的ObjectIDtypes? (关于不同IDtypes的性质有很多post,并解释了Minimongo等。我对将ObjectID转换为普通对象并解决该问题的批量操作特别感兴趣。

当mongodb插入时,节点应用程序不工作

我还在学习mongodb和node.js。 我试图插入大量的数据说80k + 100k行。 我为此创build了一个使用express.js的应用程序。 我编码的方式,一旦上传button被点击后页面redirect到另一个页面,在后台应用程序插入数据到数据库。 问题是一旦插入开始应用程序停止响应。 即使在插入应用程序完成后,将会更慢2-3分钟。 我试过这个代码 1 Fedora 14 Intel P4 2.80GHz 1.5GiB 2 Fedora 14 i3 3.20GHz 3GiB 如何避免这个问题? 它会在更好的系统上运行得更好吗? 代码来存储数据 MongoClient.connect(MONGODB_URI, function (err, database) { var collection = database.collection(collectionName); for (index = 0; index < jsonResult.length; ++index) { var obj = jsonResult[index]; for (var prop in obj) { if (headers[prop] […]

insertMany unordered / continueOnError在nodejs mongodb驱动程序中

这工作在我的本地: db.collection('test').insert(docsArray, {ordered: false}); Mongo v2.6.10 NodeJS驱动程序v2.0.45 但是,相同的代码在服务器上失败: Mongo v2.6.11 NodeJS驱动程序v2.0.45 我无法理解为什么。 驱动程序文档说insert已经被insertOne / insertMany / bulkWrite 。 所以,我尝试使用这些新的function,但无济于事。 我希望它默默地跳过错误,并插入其余的文件。 现在, insertMany没有无序的插入和bulkWrite没有insertMany目前这样做的官方方式是什么?

用Node JS将logging数组插入到mysql中

我有一些类似的数据 var records = [ {Name: '', Id: 1}, {Name: '', Id: 2}, {Name: '', Id: 3}, {Name: '', Id: 4}, {Name: '', Id: 5}, {Name: '', Id: 6} ]; logging数组中可能有成千上万的项目… 问题1:我们可以创build一个存储过程来接受mysql中的一个对象数组吗? 问题2:有没有办法使用Node JS将这些数据批量插入到MySQL中?

我该如何提高MongoDB的批量性能?

我有这个对象与一些元数据和大量的项目。 我曾经用mongo来存储这个数据,并且通过$unwind数组来查询它。 但是,在极端情况下,arrays变得如此之大,以至于遇到了16MB的BSON限制。 所以我需要将数组的每个元素作为单独的文档存储。 为此,我需要将元数据添加到所有这些元数据,所以我可以找回它们。 build议我为此使用批量操作 。 但是,performance似乎很慢。 插入一个大文件几乎是瞬间的,这需要十秒钟 。 var bulk = col.initializeOrderedBulkOp(); var metaData = { hash : hash, date : timestamp, name : name }; // measure time here for (var i = 0, l = array.length; i < l; i++) { // 6000 items var item = array[i]; bulk.insert({ // Apparently, […]

如何优化在MongoDB中使用大数据集的工作

我们有多个在node.js中生成的大约10,000个文档的集合(将来会越来越多),并且需要多次存储/查询/过滤/投影,我们有一个mongodb 聚合pipe道 。 一旦某些条件得到满足,文件将被重新生成并存储。 当我们有5000个文件时,一切正常。 我们将它们作为数组插入到单个文档中,并在聚合pipe道中unwind使用。 但是,在某个时候,文档不再适合单个文档,因为它超过了16 MB的文档大小限制。 我们需要将所有内容都存储起来,并添加一些标识符来知道它们属于哪个“集合”,所以我们只能在这些文档上使用pipe道。 问题:在我们可以在pipe道中查询这些文件之前写入这些文件是有问题的。 bulk.execute()部分可以很容易地花费10 – 15秒。 将它们添加到node.js中的数组中,并将<16 MB文档写入MongoDB只需要几分之一秒。 bulk = col.initializeOrderedBulkOp(); for (var i = 0, l = docs.length; i < l; i++) { bulk.insert({ doc : docs[i], group : group.metadata }); } bulk.execute(bulkOpts, function(err, result) { // … } 我们如何解决大量的写入开销延迟? 思念至今: 基于内存的集合临时处理数据写入磁盘时的查询。 如果内存存储引擎 (警报:被认为是beta而不是生产)值得MongoDB Enterprise许可, WiredTiger存储引擎可能比MMAPv1有更好的压缩和encryption性能。 无论如何存储单个(数组)文件,但将其分成<16 […]

MongoDB批量插入许多文件已经存在的地方

我有一个较小的文档(大约100个),可以插入到MongoDB中。 但是他们中的许多人(可能全部,但通常是80%左右)将已经存在于DB中。 这些文档代表未来几个月即将发生的事件,而且我每两天更新一次数据库。 所以大部分事件已经在那里了。 任何人都知道(或者想猜)是否会更有效率地: 做批量更新,但与continueOnError = true,例如 db.collection.insert(myArray, {continueOnError: true}, callback) 做单独的插入,首先检查_ID是否存在? 首先做一个大的删除(像db.collection.delete({_id: $in : [array of all the IDs in my new documents] }) ,然后批量插入? 我可能会做#1,因为这是最简单的,我不认为100个文件都很大,所以它可能没关系,但如果有10,000个文件? 如果有问题,我使用node.js驱动程序在JavaScript中执行此操作。 我的背景是在Java中,exception很耗时,这就是我所要求的主要原因 – “continueOnError”选项会耗时吗? 补充:我不认为“upsert”是有道理的。 这是为了更新单个文件。 就我而言,代表即将到来的事件的单个文件没有改变。 (好吧,也许是这是另一个问题) 发生了什么是一些新的文件将被添加。

避免mongodb批量插入重复键错误

我如何执行批量插入并继续在重复键错误的情况下? 我有一个唯一索引在id字段( 不是 _id )和一些数据的集合。 然后我得到更多的数据,我只想添加不存在的文件的集合。 我有以下代码: let opts = { continueOnError: true, // Neither ContinueOnError: true, // of keepGoing: true, // this KeepGoing: true, // works }; let bulk = collection.initializeUnorderedBulkOp( opts ); bulk.insert( d1 ); bulk.insert( d2 ); bulk.insert( d3 ); … bulk.insert( dN ); let result = yield bulk.execute( opts ); // […]