快速存储大量文档到 mongoose

发布于 2025-01-11 09:12:20 字数 175 浏览 0 评论 0原文

我需要尽快插入 10K 文档,但这需要很长时间。

我目前正在使用 Model.create([]) 来执行此操作。

使用与数据库的多个连接会有帮助吗?例如,有 10 个连接,每个连接可节省 1K

I need to insert 10K documents as fast as possible but it's taking a long time.

I am currently using Model.create([<huge array here>]) to do this.

Would it help to use multiple connections to the database? For example have 10 connections saving 1K each?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

鹿! 2025-01-18 09:12:20

您可以使用model.insertMany(doc, options)

下面有一些需要注意的事项。

连接池

10 个连接通常就足够了,但这很大程度上取决于您的硬件。打开更多连接可能会减慢您的服务器速度。

在某些情况下,应用程序和应用程序之间的连接数
数据库可能压倒服务器的处理能力
请求。

选项

insertMany 有几个选项可以加快插入速度。

[options.lean «Boolean» = false] 如果为 true,则跳过保湿并
验证文件。如果您需要额外的功能,此选项很有用
性能,但 Mongoose 之前不会验证文档
插入。

[options.limit «Number» = null] 这限制了文档的数量
由猫鼬并行处理(验证/铸造),这
不会将文档批量发送到 MongoDB。如果出现以下情况,请使用此选项
您正在处理大量文档并且您的应用程序正在运行
内存不足。

写入关注

在选项中的writeConcern上设置选项也会影响性能。

如果应用程序指定包含 j 选项的写入关注点,
mongod 将减少日志写入之间的持续时间,这可以
增加整体写入负载。

You can use model.insertMany(doc, options).

Some stuff to note below.

Connection Pool

10 connections is usually sufficient, but it greatly depends on your hardware. Opening up more connections may slow down your server.

In some cases, the number of connections between the applications and
the database can overwhelm the ability of the server to handle
requests.

Options

There are a couple of options for insertMany that can speed up insertion.

[options.lean «Boolean» = false] if true, skips hydrating and
validating the documents. This option is useful if you need the extra
performance, but Mongoose won't validate the documents before
inserting.

[options.limit «Number» = null] this limits the number of documents
being processed (validation/casting) by mongoose in parallel, this
does NOT send the documents in batches to MongoDB. Use this option if
you're processing a large number of documents and your app is running
out of memory.

Write concern

Setting options on writeConcern in options can also affect performance.

If applications specify write concerns that include the j option,
mongod will decrease the duration between journal writes, which can
increase the overall write load.

忘羡 2025-01-18 09:12:20

使用 db.collection.insertMany([])

insertMany 将接受对象数组,这用于执行批量插入。

Use db.collection.insertMany([])

insertMany will accept array of objects and this is use to perform bulk insertions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文