将数据从一个集合复制到另一个集合——MongoDB



我想使用MongoDB将数据从一个集合(集合A(复制到另一个集合中(集合B(。我还想把现有的数据保存在集合A中。[我使用的是MongoDB shell版本v4.4.3,带有Node.js和Express应用程序的GoormIDE(

据我所知,$merge运算符将是最合适的,但我一直遇到错误。我一直在使用以下代码:

db.getSiblingDB("<databasename>").<sourcecollection>.aggregate( [     { $match : {} },     { $merge : "<destinationnewcollection>" } ] )

这就是由此产生的错误:

uncaught exception: Error: command failed: {
"ok" : 0,
"errmsg" : "Failed to retrieve database or collection name from $merge. err=Error parsing $merge value.

"code" : 8000,
"codeName" : "AtlasError"
} : aggregate failed :

像add这样的其他操作符似乎工作得很好,所以我对这一点没什么想法。你知道我做错了什么吗?

根据文档{ $merge : "<destinationnewcollection>" }应该可以工作。然而,看起来短格式不可用,所以使用

db.getSiblingDB("<databasename>").<sourcecollection>.aggregate([
{ $unset: "_id" },
{ $merge: { into: "<destinationnewcollection>" } } 
])

db.getSiblingDB("<databasename>").<sourcecollection>.aggregate([
{ $unset: "_id" },
{ $merge: { db: "<databasename>", coll: "<destinationnewcollection>" } } 
])

你可以跳过{ $match : {} }——它什么都不做。删除_id字段可以确保在任何情况下都添加了所有文档,这也应该加快操作速度。

最新更新