Поскольку вы находитесь на mongoDB V4.2 и ваши две коллекции находятся в одной базе данных и существуют, вам нужно использовать $ merge :
Попробуйте этот запрос:
db.getCollection('coll-1').aggregate( [
{ $merge : { into: { coll: "coll-2" }, on: "_id", whenNotMatched: "insert" } }
])
Документы в col-1:
/* 1 */
{
"_id" : ObjectId("5e1f7ac3f35652fb779fcf3e"),
"random1" : 1
}
/* 2 */
{
"_id" : ObjectId("5e1f7acff35652fb779fd310"),
"random1" : 2
}
Документы в col-2:
/* 1 */
{
"_id" : ObjectId("5e1f7adcf35652fb779fdb42"),
"random2" : 1
}
/* 2 */
{
"_id" : ObjectId("5e1f7ae5f35652fb779fde24"),
"random2" : 2
}
Результат:
/* 1 */
{
"_id" : ObjectId("5e1f7adcf35652fb779fdb42"),
"random2" : 1
}
/* 2 */
{
"_id" : ObjectId("5e1f7ae5f35652fb779fde24"),
"random2" : 2
}
/* 3 */
{
"_id" : ObjectId("5e1f7ac3f35652fb779fcf3e"),
"random1" : 1
}
/* 4 */
{
"_id" : ObjectId("5e1f7acff35652fb779fd310"),
"random1" : 2
}
Поскольку я хотел написать все от coll-1
до coll-2
, у меня нет этапов агрегирования до $merge
, вам нужно иметь это $merge
как последний этап в конвейере агрегации (для целей тестирования вы можете фактически удалить его и проверить данные через пару dry прогонов и затем выполнить фактическую операцию). Кроме того, $merge
имеет много опций, которые могут быть переданы в нескольких, например: - Что делать, если значения полей on
совпадают, и несколько других опций, поэтому, пожалуйста, go в документации MongoDB.