Ilk*_*aci 6 javascript database mongodb nosql node.js
我正在开发一个迁移功能,需要在特定时间间隔内检索足球比赛结果并更新 MongoDB 中这些比赛的现有投注文档。此代码将在一天中多次调用,我正在寻找有关计算性能
数据结构看起来像这样。
{
"games": {
"2324754": {
"id": "2324754",
"comp_id": "1005",
"formatted_date": "14.03.2018",
"localteam_name": "Barcelona",
"localteam_score": "3",
"visitorteam_name": "Chelsea",
"visitorteam_score": "0"
},
"2324756": {
"id": "2324756",
"comp_id": "1005",
"formatted_date": "14.03.2018",
"localteam_name": "Be?ikta?",
"localteam_score": "1",
"visitorteam_name": "Bayern München",
"visitorteam_score": "3",
}
},
"bets": [
{
"_id": "5aa9535c6c4f437de713452a",
"match_id": "2324756"
},
{
"_id": "5aacf9605c41bc0b3db304fd",
"match_id": "2324754"
}
]
}
Run Code Online (Sandbox Code Playgroud)
一种选择是迭代 bets 数组并调用findOneAndUpdate()
单个下注文档。由于性能问题,对于具有 150-200 个元素的 bets 数组无法很好地工作。
问题是是否有可能通过updateMany()
操作来实现这种迁移。使用给定的查询所有文档不是问题,match_id
但是如何为updateMany()
?
文档中的示例假设多个文档的所需字段使用相同的值进行更新。 https://docs.mongodb.com/manual/reference/method/db.collection.updateMany/
更新:
另一种选择是创建一个 Bulk 操作并findOneAnUpdate()
在 for 循环内进行。但我再次不确定这是否足够有效。任何人都可以确认这将是他最好的/唯一的选择吗?至少不会用多个更新请求加载 mongo 服务器。
https://docs.mongodb.com/manual/reference/method/Bulk.find.update/
var bulk = db.items.initializeUnorderedBulkOp();
//Iterate Bets
//findOneAnUpdate
bulk.execute();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1121 次 |
最近记录: |