【问题标题】:Using forEach loop to save data in a MongoDB for elements in an array使用 forEach 循环在 MongoDB 中为数组中的元素保存数据
【发布时间】:2016-06-01 01:44:14
【问题描述】:

我目前正在使用一个 forEach 循环,该循环遍历我用来更新和设置/保存我通过发布请求发送的数据的电子邮件数组。

这是我当前的代码:

app.post('/register/register', function(req, res){

var emails = ['hello@gmail.com', 'yay@gmail.com', 'cool@gmail.com']

  emails.forEach(function(element){
    User.update(
     {email: element}, {$set: {team: req.body}}
    , function(err, user){
    })
  })
  res.sendStatus(200);
})

这段代码有效,但我不禁觉得它写得很糟糕。 mongoDB 中有什么东西可以让我找到数组 emails 中的所有文档,我可以用数据一次更新它,而不是遍历每个项目并以这种方式保存?

谢谢。

【问题讨论】:

  • 调用应该是单个更新调用,以减少开销。在 mongoDB 端处理数组。无论如何,我通常将单个项目放入数组中,这样数据库就不必检查类型

标签: javascript node.js mongodb foreach mongoose


【解决方案1】:

当然,你可以这样做:

app.post('/register/register', function(req, res){

var emails = ['hello@gmail.com', 'yay@gmail.com', 'cool@gmail.com']

    User.update(
     {email: {$in: emails}}, {$set: {team: req.body}}
    , function(err, user){
    })
  res.sendStatus(200);
})

$in 运算符将匹配所有用户与您的数组中的电子邮件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 2018-01-06
    • 2011-02-20
    • 2010-12-29
    • 1970-01-01
    相关资源
    最近更新 更多