【问题标题】:Update multiple docs with different values使用不同的值更新多个文档
【发布时间】:2013-03-28 11:30:13
【问题描述】:

不要认为这是可能的,但想检查一下。

如果我有以下文件:

doc1 : {
  _id: 1,
  name: 'John Smith',
  age: 20
}

doc2 : {
  _id: 2,
  name: 'Jane Smith',
  age: 22
}

我希望客户能够在同一个更新请求中将两个文档都传递给我。在这种情况下,可以为两个文档添加一个地址。

有没有办法我可以向 mongo 发送一个更新语句,以便它使用名称值更新两个文档?

I.E.来自客户:

doc1 : {
  _id: 1,
  name: 'John Smith',
  age: 20,
  address: '123 Street'
}

doc2 : {
  _id: 2,
  name: 'Jane Smith',
  age: 22,
  address: '456 Way'
}

目前我正在迭代这些值并一次更新一个。问题在于 mongoose/mongodb 更新是异步的,所以我无法可靠地告诉客户端我更新了每个结果,直到所有更新回调都被触发。我有一个计数器来确保我收到 N 个回调然后我发送一个响应。

【问题讨论】:

  • 需要将其拆分为两个更新。查看async 库,了解改进回调计数器方法的方法。
  • 如果您将 same 更新应用到多个文档,您可以为 update() 使用 multi:true 标志。

标签: node.js mongodb mongoose


【解决方案1】:

我所做的所有更新都是一次一个,但对我来说很好的是它们是同步的。 =)

您似乎可以使用 mongoimport 工具批量加载:http://docs.mongodb.org/manual/reference/mongoimport/#cmdoption-mongoimport--upsertFields。您可以通过这种方式进行批量更新。

否则我不相信您可以通过客户端在一个命令中完成。

【讨论】:

    猜你喜欢
    • 2013-06-16
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 2016-08-29
    • 2020-11-19
    • 2018-11-19
    相关资源
    最近更新 更多