У меня есть две коллекции со следующим форматом данных -
{
"_id":ObjectId("5b336305fa012c47c837d3b9"),
"title":"Information",
"description":"<p><strong>Hello World! This is a test editor</strong></p>",
"status":"publish",
"categories":[
"5b2b02cd317c7e100d3ae773"
],
"created_date": ISODate("2018-06-27T10:12:21.294 Z"),
"image":"/articles/server/images/1530094341293.jpg",
"owner_id":"5b1510af1d1b700edc110dda"
}
{
"_id":ObjectId("5b2b02cd317c7e100d3ae773"),
"name":"Google",
"slug":"google_1529545421927",
"description":"google another test....",
"created_date": ISODate("2018-06-21T01:43:41.918 Z")
}
Первый - Articles
, а второй - Categories
коллекция.
Я пытался заменить следующие Articles
идентификаторы полей коллекции соответствующими именами категорий из Categories
коллекции, когда мой экспресс-запрос вернулся с json
data -
"categories":[
"5b2b02cd317c7e100d3ae773"
],
Так что я мог бы отправить имя категории, а не идентификатор в следующем формате -
"categories":[
"Google"
],
Я пытался выполнить запрос forEach
из MongoDB
со следующим кодом -
db.collection('articles').find()
.forEach(function (article) {
let categories = article.categories;
categories = categories.map(id => ObjectID(id));
var doc2 = db.collection('categories').find({_id: {$in: categories}});
console.log(doc2);
res.status(200).json('success');
});
Я ценю ваши подсказки или решения, чтобы получить эффективное решение без написания большого количества запросов.
Примечание:
Я пытался с aggregate $lookup
, но я не смог этого сделать, так как мне пришлось иметь дело с array
, а не со значением.
Спасибо!