#javascript #node.js #database #mongodb
Вопрос:
**Почему этот код не работает? **
let posts = await postsCollection.aggregate([
{$match: {_id: new ObjectID(id)}},
{$addFields: {authorId: { $toObjectId: "$author"}}},
{$lookup: {from: "users", localField: "author", foreignField: "_id", as: "authorDocument"}}
]).toArray()
Комментарии:
1. Что он должен делать?
2. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы точно указать, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.
Ответ №1:
Ниже должно сработать.. Я предполагаю, что postsCollection и пользователи-это коллекция, к которой вы хотите присоединиться на основе AuthorID в качестве общего ключа, но она хранится в виде строки в postsCollection и как _id в пользователях.
let posts = await postsCollection.aggregate([
{$match: {_id: new ObjectID(id)}},
{$addFields: {authorId: { $toObjectId: "$author"}}},
{$lookup: {from: "users", localField: "authorId", foreignField: "_id", as: "authorDocument"}}
]).toArray()
Примечание: вы использовали author, но он должен быть AuthorID
Комментарии:
1. нет, не сработало, приятель.
2. можете ли вы поделиться образцами документов из обеих коллекций?
3. что вы подразумеваете под коллекцией обоих ?
4. коллекция сообщений и коллекция пользователей, например, здесь у меня есть примеры данных двух коллекций и поиска : mongoplayground.net/p/ZuGX9-2bNKg
5. const postsCollection = требуется(‘../db’).db().коллекция(«сообщения»);