你可以在下面试试
position.aggregate([
{ "$lookup": {
"from": "companies",
"let": { "companyId": "$_id" },
"pipeline": [
{ "$match": { "$expr": { "$eq": [ "$_id", "$$companyId" ] } } },
{ "$project": { "name": 1 }}
],
"as": "companyName"
}},
{ "$unwind": "$companyName" },
{ "$match": {
"$or": [
{ "name": { "$regex": "good" }},
{ "companyName.name": { "$regex": "good" }}
]
}}
])
find
查询
const companies = await Companies.find({ "name": { "$regex": "good" }})
const ids = companies.map(company => company._id)
position.find({
"$or": [
{ "companyId": { "$in": ids }},
{ "name": { "$regex": "good" }}
]
})