首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB -在一个更新查询中使用多个fetch查询的结果

MongoDB -在一个更新查询中使用多个fetch查询的结果
EN

Stack Overflow用户
提问于 2019-08-12 23:14:09
回答 2查看 49关注 0票数 0

我正在搭建一个平台,让学生在上面进行模拟测试。一旦测试完成,将为他们生成相对于尝试上述测试的其他学生的结果。

报告包含多个参数,例如排名、批次内的排名,以及人们在给定测试中获得的平均分数等内容都会更新。

为了获得这些数据中的每一个,我需要在数据库上执行一个单独的查询,然后我需要更新1.尝试测试的当前用户的结果2.其他所有人的结果(即每个人的排名在新的尝试中发生变化)

因此,我需要执行多个查询来获取数据,并运行2-3个更新查询来设置新数据。

鉴于mongodb调用是异步的,我找不到一种方法将所有这些数据收集在一个地方进行更新。

一种方法是将下一个查询放在前一个查询的回调函数中,但我觉得应该有比这更好的方法。

EN

回答 2

Stack Overflow用户

发布于 2019-08-12 23:17:52

也许你可以使用Promise.all()

示例:

代码语言:javascript
复制
const initialQueries = []

initialQueries.push("Some promise(s)")

Promise.all(initialQueries).then(results => {
  // After all initialQueries are finished
  updateQueries()
}).catch(err => {
  // At least one failed
})
票数 0
EN

Stack Overflow用户

发布于 2019-08-13 00:11:14

使用db.collection.bulkWrite。它允许多个文档插入更新(通过_id或自定义过滤器),甚至删除

代码语言:javascript
复制
const ObjectID = require('mongodb').ObjectID;
db.collection('tests').bulkWrite([
  { updateOne : {
    "filter" : { "_id" : ObjectID("5d400af131602bf3fa09da3a") },
    "update" : { $set : { "score" : 20 } }
    }
  },
  { updateOne : {
    "filter" : { "_id" : ObjectID("5d233e7831602bf3fa996557") },
    "update" : { $set : { "score" : 15 } }
    }
  }
]);

3.2版中的新功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57463867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档