将一个集合中的所有文档插入到MongoDB数据库中的另一个集合中。

7 浏览
0 Comments

将一个集合中的所有文档插入到MongoDB数据库中的另一个集合中。

我有一个每天收集数据并将其插入到MongoDB集合(约10M个文档)的Python脚本。有时作业会失败,我只得到了不完整的数据,对我来说没有用处。我想先将数据插入到一个暂存集合中,然后在作业完成且数据完整时,将所有文档从暂存集合复制或移动到最终集合中。我似乎找不到一个直接的解决方案来进行这样的“批量”操作,但是应该有一个解决方案。

在SQL中,可以像这样操作:

INSERT INTO final_table
SELECT *
FROM staging_table

我以为db.collection.copyTo()可以用于此操作,但它似乎只是将目标集合克隆为源集合。

此外,根据这个问题:mongodb move documents from one collection to another collection,我可以像下面这样做:

var documentsToMove = db.collectionA.find({});
documentsToMove.forEach(function(doc) {
    db.collectionB.insert(doc);
}

但是,似乎应该有一种更高效的方法。

那么,如何以最高效的方式将一个集合中的所有文档插入到另一个集合中?

注意:最终集合中已经有数据。我想要移动的新文档将添加到这些数据中,例如,如果我的暂存集合有2个文档,最终集合有10个文档,将暂存数据移动后,最终集合将有12个文档。

0
0 Comments

在MongoDB数据库中,有时需要将一个集合中的所有文档插入到另一个集合中。这种需求可能会出现在需要合并数据或备份数据的情况下。下面是解决这个问题的方法:

方法一:使用insertMany()方法

可以使用MongoDB的insertMany()方法将一个集合中的所有文档插入到另一个集合中。该方法接受一个文档数组作为参数,并将这些文档插入到目标集合中。下面是一个示例代码:

db.sourceCollection.find().forEach(function(doc){
  db.targetCollection.insertOne(doc);
});

方法二:使用aggregate()方法和$merge操作符

MongoDB 4.2及以上版本提供了$merge操作符,可以使用它将一个集合中的所有文档合并到另一个集合中。下面是一个示例代码:

db.sourceCollection.aggregate([
  { $match: {} },
  { $merge: { into: "targetCollection", on: "_id", whenMatched: "replace", whenNotMatched: "insert" } }
])

无论使用哪种方法,都需要确保目标集合已经存在,并且有足够的权限进行写入操作。同时,还需要注意在执行操作前备份数据,以防止意外情况发生。

本文介绍了在MongoDB数据库中将一个集合中的所有文档插入到另一个集合中的方法。无论是使用insertMany()方法还是$merge操作符,都可以实现这个功能。在执行操作前,需要确保目标集合已经存在,并且有足够的权限进行写入操作。为了防止意外情况发生,建议在执行操作前备份数据。

0
0 Comments

“将一个集合中的所有文档插入到另一个集合中的MongoDB数据库中”这个问题的出现的原因以及解决方法。

问题的出现原因:

在MongoDB数据库中,有时候需要将一个集合中的所有文档插入到另一个集合中。这可能是因为需要将数据从一个集合复制到另一个集合,或者需要将数据从一个数据库复制到另一个数据库。

解决方法:

在MongoDB中,可以使用db.cloneCollection()方法来实现将一个集合中的所有文档插入到另一个集合中。具体步骤如下:

1. 打开MongoDB Shell,并连接到相关的数据库。

2. 使用db.cloneCollection()方法来复制集合中的所有文档到另一个集合中。语法如下:

db.cloneCollection(from_collection, to_collection, query)

其中,from_collection是要复制的原始集合的名称,to_collection是要插入文档的目标集合的名称,query是可选的查询条件,用于指定要复制的文档的子集。

3. 执行db.cloneCollection()方法,将文档从原始集合复制到目标集合。例如:

db.cloneCollection("source_collection", "target_collection")

这将复制source_collection中的所有文档到target_collection中。

4. 检查目标集合中的文档是否成功插入。

可以通过使用db.cloneCollection()方法将一个集合中的所有文档插入到另一个集合中的MongoDB数据库中。这个方法简单易用,可以很方便地实现将数据从一个集合复制到另一个集合的需求。

0