Database MongoDB聚合查找管道查询
我正在寻找有关MongoDB查找聚合查询的帮助 我正在尝试加入两个系列,即“咖啡馆”和“邮票”。在查找过程中,我希望匹配给定咖啡馆的戳记,然后进一步排序并将结果限制为10 相关的id字段是:“\u id”用于cafe集合,而“cafeId”用于邮票集合 下面是我想到的,但是,在尝试通过ID在给定集合之间进行匹配时,似乎出现了问题。我相信这可能与Mongo不把它们当作ObjectID有关,但我不确定Database MongoDB聚合查找管道查询,database,mongodb,mongoose,nosql,Database,Mongodb,Mongoose,Nosql,我正在寻找有关MongoDB查找聚合查询的帮助 我正在尝试加入两个系列,即“咖啡馆”和“邮票”。在查找过程中,我希望匹配给定咖啡馆的戳记,然后进一步排序并将结果限制为10 相关的id字段是:“\u id”用于cafe集合,而“cafeId”用于邮票集合 下面是我想到的,但是,在尝试通过ID在给定集合之间进行匹配时,似乎出现了问题。我相信这可能与Mongo不把它们当作ObjectID有关,但我不确定 db.cafe.aggregate([ { $lookup: {
db.cafe.aggregate([
{
$lookup: {
from: "stamp",
as: "stamps",
let: {
id: "$_id",
name: "$name"
},
pipeline: [
{ $project: { id:1, cafeId: { $toObjectId: "$$id"}, name:1 } },
{ $match: { expr: { $eq: ["$$cafeId", "$cafeId"] } } },
{ $sort: { stampDate: -1 } },
{ $limit: 10 }
]
}
}
]);
设法想出了如何实现我想要的。把这个留给其他试图达到同样结果的人
db.cafe.aggregate([
{
$lookup: {
from: "stamp",
as: "stamps",
let: {
id: "$_id",
name: "$name" //All cafes variables,
},
pipeline: [
{
$project: {
cafeId: 1,
stampDate: 1,
stampId: 1,
cafeId: 1,
status: 1,
userId: { $toObjectId: "$userId" }
}
},
{
$match: {
$expr: {
$and: [
{
$eq: [{ $toObjectId: "$$id" }, { $toObjectId: "$cafeId" }]
},
{
$eq: [
{ $toObjectId: "$userId" },
mongoose.Types.ObjectId(req.user._id)
]
}
]
}
}
}
]
}
}
]);