jjzjj

BulkWrite

全部标签

node.js - Mongoose bulkWrite - 'q' 的错误类型

对于我的测试套件,我想在数据库中批量写入测试信息,然后批量删除在整个测试过程中输入的任何测试信息以恢复到干净状态。为此,我在数据库上运行bulkWrite,我将通过nodeJS的require语句加载的JSON文件的内容传递给该数据库。问题是对于数据集[{deleteOne:{username:'test-author'}}]传递给models[key].collection.bulkWrite(action[key]),其中key是感兴趣的模型的名称,action是JSON文件,我收到以下错误:{MongoError:Wrongtypefor'q'.Expectedaobject,g

node.js - Upsert 不适用于 updateOne bulkWrite v3.4

我正在尝试批量写入一些更新,除了upsert之外的所有内容都在工作。我的代码正在完美地更新所有项目,并且从未出现过任何错误。这里的问题是使用updateOne的批量插入没有更新。(这是我的代码的一个未经测试和缩短的示例,因此您可能会发现一些语法错误。希望您能理解。)asyncfunctioninsert(items){constops=items.map(item=>({updateOne:{filter:{id:item.id,country:item.country,},update:{$set:item},upsert:true}}));returnawaitdb.collect

mongodb - 通过 ID 删除 100M+ 文档的最快方法

我目前面临着从一个数据库中从100k文档到100M文档的多个集合中删除100M+文档,文档总数约为300M。此外,每个文档在其他集合中都有引用,这些引用必须被取消。我有一个要删除的所有文档的集合+ID的列表,目标是尽快删除它们,以便对用户的影响最小。我目前的方法是通过{_id:{$in:[]}}发送要删除的5k组,并同时向引用这些文档的所有集合发送更新分组时尚。结果证明这很慢,所以我正在寻找替代方案。我刚读到有关批量写入API的信息,我想知道这是否是更好的解决方案。如果是这样,我很好奇使用它的最有效方法是什么。我是否应该像现在这样继续分组,但在一个批量请求中一次发送多个组?我是否应该停

mongodb - DeprecationWarning : collection. 插入已弃用。改为使用 insertOne、insertMany 或 bulkWrite

我正在为Ionic前端开发LoopBack后端。它使用MongoDB作为数据库。在package.json中,我尝试将依赖项loopback-connector-mongodb从升级到^3.6.0>^3.4.1,但我遇到了这种警告。DeprecationWarning:collection.insertisdeprecated.UseinsertOne,insertManyorbulkWriteinstead.但是,我仍然没有找到解决方案,所以我想我必须再次降级。(如果是这样,就没有这样的警告¯_(ツ)_/¯)有更好的解决方案吗?谢谢。 最佳答案

go - 如何使用 MongoDB 的 Go 驱动程序 BulkWrite\UpdateMany

我正在从mgo驱动程序迁移,我的函数如下所示:queue:=collection.Bulk()forj:=rangechanges{..queue.Update(doc,update)}saveResult,err:=queue.Run()这使得一些$push和$set循环更新到单个文档。我应该如何使用官方驱动程序执行此操作?是collection.BulkWrite()还是collection.UpdateMany()?文档非常模糊,我不知道如何使用它们以及有什么区别。任何帮助将不胜感激。 最佳答案 对于您的用例,您将使用coll

go - 如何使用 MongoDB 的 Go 驱动程序 BulkWrite\UpdateMany

我正在从mgo驱动程序迁移,我的函数如下所示:queue:=collection.Bulk()forj:=rangechanges{..queue.Update(doc,update)}saveResult,err:=queue.Run()这使得一些$push和$set循环更新到单个文档。我应该如何使用官方驱动程序执行此操作?是collection.BulkWrite()还是collection.UpdateMany()?文档非常模糊,我不知道如何使用它们以及有什么区别。任何帮助将不胜感激。 最佳答案 对于您的用例,您将使用coll

MongoDB BulkWrite 内存成本

我正在使用Go的官方mongodb驱动程序。我获取一个CSV并逐行读取它,直到达到1000行,然后我解析数据并将其插入到数据库中。我假设它需要一个恒定的内存,因为批量写入的数据总是相同的(1000个联系人)。但是,随着内存显着增加,情况并非如此。以下是有关上述查询的一些数据:batchSize=1000Contacts-Memoryconsumedbybulkwrite10k-14MB20K-30MB30K-59MB40K-137MB50K-241MB谁能解释一下为什么?代码如下:func(c*csvProcessor)processCSV(rio.Reader,headerMapma

mongodb - 如何获取当前文档的指针以在 updateMany 中更新

我有一个最新的mongodb3.2,并且有许多具有时间戳的项目的集合。需要将毫秒转换为Date对象,现在我使用这个函数:db.myColl.find().forEach(function(doc){doc.date=newDate(doc.date);db.myColl.save(doc);})更新200万行需要很长时间。我尝试使用updateMany(似乎非常快),但我如何才能访问当前文档?有没有机会使用updateMany重写上面的查询?谢谢。 最佳答案 您可以利用其他批量更新API,例如bulkWrite()方法,它允许您使用

mongodb - 如何获取当前文档的指针以在 updateMany 中更新

我有一个最新的mongodb3.2,并且有许多具有时间戳的项目的集合。需要将毫秒转换为Date对象,现在我使用这个函数:db.myColl.find().forEach(function(doc){doc.date=newDate(doc.date);db.myColl.save(doc);})更新200万行需要很长时间。我尝试使用updateMany(似乎非常快),但我如何才能访问当前文档?有没有机会使用updateMany重写上面的查询?谢谢。 最佳答案 您可以利用其他批量更新API,例如bulkWrite()方法,它允许您使用

node.js - 尝试与 Mongoose 进行批量更新。最干净的方法是什么?

我有一个包含三个字段的文档的集合:名字、姓氏和年龄。我试图弄清楚我可以使用Mongoose中的哪些查询来进行批量upsert。我的应用程序偶尔会收到具有这三个字段的新对象数组。我希望查询检查文档中是否已经存在名字和姓氏,如果存在-如果年龄不同,请更新年龄。否则,如果名字和姓氏不存在,则插入一个新文档。目前,我只进行导入-尚未构建此upsert片段的逻辑。app.post('/users/import',function(req,res){letdata=req.body;letdataArray=[];data.forEach(datum=>{dataArray.push({first
12