gpt4 book ai didi

node.js - 如何将 websocket 响应保存到 mongodb

转载 作者:太空宇宙 更新时间:2023-11-04 01:54:13 25 4
gpt4 key购买 nike

我使用 node.js ws 模块连接到 websocket。每次我收到名为“add_items”的事件的响应时,我都想将其保存到 mLab 云数据库。

Websocket 响应如下所示

{"event":"add_items","data":[

{"id":["13635936204"],
"m":"name1",
"p": 14.00}

{"id":["13635936220"],
"m":"name2",
"p": 50.00}

]}

连接数据库并保存新数据的最佳方式是什么?

目前我使用 .forEach 方法循环数组,然后为每个新项目创建对象并使用 db.collection.insert() 方法将其保存到数据库。但问题是我每秒可能会收到超过 50 个项目,有时我会收到错误“mongodb 连接超时”。是否可以使用 mongoose 模块来简化此过程?

最佳答案

您可以使用 MongoDB 的 insertMany:

db.collection.insertMany(websocketEvent.data);

其中websocketEvent是通过Websocket收到的响应。检查 insertMany 语法和信息 here .

更新:

也许您可以循环调用 updateOne 数组,并决定使用 arrayFilters 字段更新或插入,如下所示:

websocketEvent.data.forEach(event => {
db.collection.updateOne(
{ _id: ObjectID(event.id[0])},
{ $set: { m: event.m, p: event.p }},
{
upsert: true,
arrayFilters: [ <filterdocument1>, ... ]
}
)
}

检查docs for info on the arrayFilters field for updateOne .

关于node.js - 如何将 websocket 响应保存到 mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48581489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com