我想使用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
字段可以确保在任何情况下都添加了所有文档,这也应该加快操作速度。