Как преобразовать authorid в postid, чтобы я мог извлечь сведения об авторе и сохранить их в массиве authorDocument?

#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().коллекция(«сообщения»);