【发布时间】:2021-12-18 01:46:27
【问题描述】:
我是 mongoDB 的新手。也许这是一个简单的问题。请帮我解决这个问题。
有 2 个表 book 和 bookStocks。
桌书
{
"_id" : "SHN-E3AE0DB3BC7D-4214-BDAE-59140DA1F850",
"nameOfBook" : "test",
"nameOfAuthor" : "test authou",
"yearOfPublication" : "1998",
"publication" : "test",
"edition" : "test",
"status" : "available",
"price" : "test",
"addedOn" : ISODate("2021-10-27T08:39:00.147+0000")
}
桌书架
{
"_id" : "SHNC-E1C6CF22A055-4A7E-AB79-CAEDC65AB29C",
"bookId" : "SHN-E3AE0DB3BC7D-4214-BDAE-59140DA1F850",
"collegeId" : "COL-D0E03FA4803F-4224-A321-1801626A9942",
"course" : "bcom",
"bookDetails" : "eeff",
"status" : "available",
"addedOn" : ISODate("2021-11-01T08:26:54.916+0000")
}
我将拥有的唯一值是collegeId。这就是我需要的结果
[
{
"_id": "SHN-E3AE0DB3BC7D-4214-BDAE-59140DA1F850",
"nameOfBook": "test",
"nameOfAuthor": "test authou",
"yearOfPublication": "1998",
"publication": "test",
"status": "available",
"price": "test",
"addedOn": "2021-10-27T08:39:00.147Z",
"bookStocks": [
{
"_id": "SHNC-E1C6CF22A055-4A7E-AB79-CAEDC65AB29C",
"bookId": "SHN-E3AE0DB3BC7D-4214-BDAE-59140DA1F850",
"collegeId": "COL-D0E03FA4803F-4224-A321-1801626A9942",
"course": "bcom",
"bookDetails": "eeff",
"status": "available",
"addedOn": ISODate("2021-11-01T08:26:54.916+0000")
},
{
"_id": "SHNC-E1C6CF22A055-4A7E-AB79-CAEDC65AB29D",
"bookId": "SHN-E3AE0DB3BC7D-4214-BDAE-59140DA1F850",
"collegeId": "COL-D0E03FA4803F-4224-A321-1801626A9942",
"course": "bcom",
"bookDetails": "eeff",
"status": "available",
"addedOn": ISODate("2021-11-01T08:26:54.916+0000")
}
]
}
]
这是我正在尝试的代码
const pipeline = [
{ $match: { 'bookStocks.collegeId': collegeId } },
{
"$lookup": {
"from": "bookStocks",
let: {
bookId: "$bookId"
},
pipeline: [
{
$match: {
$expr: {
$eq: [
"$$bookId",
"$bookId"
]
}
}
}
],
"as": "bookStocks"
}
}
];
我确定这是不正确的。谁能帮我这个?提前致谢。
【问题讨论】:
标签: arrays mongodb mongoose mongodb-query aggregation-framework