Я новичок в mongoDb.Я установил две коллекции.1) книга 2) комментарии
book :
_id
title
author
posted
price
И комментарии:
_id
bookId
comment
status
Я хочу получить комментарий к этой книге, который имеет status = 1
.
Я пробовал это.
return new promise((resolve, reject) => {
db.collection('book').aggregate([
{
$lookup:{
from:'comments',
localField: "_id",
foreignField: "bookId",
as: "comments"
}
}
]).toArray().then((result) => {
if(result.length > 0){
res.send({ status: 1, message: "Success.", data:result });
}else{
res.send({ status: 0, message: "No data found." });
}
}).catch((err) => {
res.send({ status: 0, message: "Something went wrong."});
});
});
И когда я позвонил своему API, я получил это в почтальоне.
{
"status": 1,
"message": "Success.",
"data": [
{
"_id": "5bacad201bff841afb40791f",
"title": "Game of thrones",
"author": "John snow",
"posted": "16/07/1995",
"price": 1000,
"comments": [
{
"_id": "5bacc31aa2d365256cab31ce",
"bookId": "5bacad201bff841afb40791f",
"comment": "Winter is comming"
},
{
"_id": "5bacc3f65c716925df953615",
"bookId": "5bacad201bff841afb40791f",
"comment": "It has a level of politics"
},
{
"_id": "5bacd60ea38cc526f1fee1d1",
"bookId": "5bacad201bff841afb40791f",
"comment": "It has a level of politics",
"status": 1
}
]
},
{
"_id": "5bacad601bff841afb407920",
"title": "Breaking bed",
"author": "Haison burg",
"posted": "20/08/2002",
"price": 550,
"comments": []
}
]
}
Мне нужны данные, комментарии которых имеют значение статуса 1.Я пытался использовать $match
после $lookup
, но это не работает.Я также пытался использовать $eq
, что также не работает для меня.Вполне возможно, что я установил это неправильно, потому что я только начал изучать mongodb.