Вы можете сделать с помощью $lookup
- Для диапазона цен от 1300 до 1800 поиск должен дать мне продукт MAYBE0000001, так как он переопределен.
- Для диапазон цен от 700 до 1300 поисков должен дать мне 0 результатов.
Я начал запрос в локальной коллекции. И написал запрос диапазона.
или поиск по полу "F", я должен получить sku MAYBE0000001, поскольку он не переопределен.
Для этого я применил $match
после поиска.
Здесь я пишу запрос для того же:
db.local.aggregate([
{
$match:{
"price":{
$gt:"1300",
$lte:"1800"
}
}
},
{
$lookup:{
from:"global",
let:{
"sku":"$sku"
},
pipeline:[
{
$match:{
$expr:{
$eq:[
"$sku",
"$$sku"
]
}
}
}
],
as:"lookups"
}
},
{
$unwind:"$lookups"
},
{
$project:{
"sku":1,
"price":1,
"gender":"$lookups.gender",
"color":"$lookups.color",
"variant":"$lookups.variant"
}
},
{
$match:{
"gender":"F"
}
}
]).pretty()
Вывод
{
"_id" : ObjectId("5ea6f19ac3798d09bdd1c516"),
"sku" : "MAYBE0000001",
"price" : "1500",
"gender" : "F",
"color" : "BLUE",
"variant" : null
}
Подробнее о $lookup
см. здесь .
надеюсь, это поможет :) 1035 *