Я пытаюсь присоединить две коллекции к новой коллекции, вставляя результат в новую коллекцию.
Код, который я использую для соединения:
db.users.aggregate(
[{
$lookup: {
from: "posts",
localField: "_id",
foreignField: "_uid",
as: "postsByUser"
}
}])
Я знаю, что это возвращает новую коллекцию / массив Теперь я могу вставить этот новый массив в новую коллекцию следующим образом:
db.postsByUsers.insert(db.users.aggregate(
[{
$lookup: {
from: "posts",
localField: "_id",
foreignField: "_uid",
as: "postsByUser"
}
}]))
Но результат, который я получаю в коллекции «postsByUsers», не такой, как я ожидал . Я получаю много дополнительных полей, например: _useReadCommands, _cursorid, _batchSize et c. Я получаю нужную мне информацию в поле _batch, но оно не такое чистое, как я ожидал, я хочу, чтобы он выглядел как массив с объектами внутри него + поле postsByUser в конце, которое предоставит мне всю информацию. Поскольку я тестирую это, пытаясь установить var
usersPosts, которые равны кодированию соединения, которое я сделал, и перебирая его, и для каждого do c: db.postsByUsers.insert(usersPosts)
, который, кажется, ничего не делает:
usersPosts.forEach(function(doc){
db.postsByUsers.insertOne(doc)
})
Странная вещь, что мне удалось получить результат, который я хотел, но я не знаю почему (странно), я попытался go через код, который я написал, нажав клавишу вверх на cmd, но, похоже, ничего не дает мне тот же результат ... Пожалуйста, помогите и большое спасибо за чтение!