如何将一个集合中所有文档的数据字段移动到另一个集合的新文档中?

时间:2017-11-16 03:27:11

标签: node.js database mongodb express mongoose

我的情况:我创建了一个Mongo(mongoose),Express和Node应用程序,现在我正在构建其他功能,我已经意识到我的模型将无法处理新功能,所以我构建了一个未来证明的新模型,但我需要将我的旧模型User的一些数据字段移动到我的新模型List。

将文档数据从一个文档集合中的所有特定字段移动到新集合中的新文档中的最佳方法是什么?我可以使用JavaScript创建脚本并对我的服务器或数据库运行吗?

如果可能的话,我不想破坏用户的体验。另外,我知道有db.collection.update方法,但我需要一次性移动所有这些数据,而不是每当我在我的应用程序中运行该方法时。

1 个答案:

答案 0 :(得分:1)

您可以通过多种方式编写脚本,但最简单的方法是:

  1. 在管道末尾使用aggregate$out阶段来填充原始文档中的新集合。使用管道中的$project阶段根据需要构建输出文档。
  2. 使用原始集合上的updateMany,使用$unset运算符删除“已移动”字段。
  3. 根据系统的具体情况,您可能仍需要在执行此操作时让用户脱机。