セルジオカノ:
私は、集約を使用して、いくつかのデータを照会しようとしていますが、何かが動作していません...
私はいくつかの例を検索してきた、これは私が持っているものです...
(私のWebアプリから私はちょうど検索語を受け取ります)
productosModel.aggregate([
//IN THE FIRST STAGE I FILTER BY REF OR NAME ( searchTerm )
{
$match: {
$or: [
{ ref: { '$regex': req.body.ref, '$options': 'i' } },
{ nombre: { '$regex': req.body.nombre, '$options': 'i' } }
]
}
},
{
$lookup: {
from: "configtarifas",
let: { "producto": "$_id" }, //HERE IS WHERE I PRETEND TO DEFINE THE _ID FILTERED
pipeline: [
{
$match: {
$expr: { $eq: ['$idProducto', "$$producto" ] },
}
}
],
as: "configs",
}
}
])
それから私は、このコレクションに参加し、データにconfigTarifasを追加するために$ルックアップを使用する必要がありますが、私は、製品の_idとの試合は前に濾過することを単に文書を受け取りたいと思います...
何が私が間違っているのでしょうか?コンフィグコレクションはproductoは_id値を取得していない$$のような任意の$$ producto ... seemnsに一致していません
Valijon:
あなたは親の間の不一致種類持って$_id
(ObjectId
)フィールドとidProducto
(String
)を。あなたは、変換する必要があるObjectId
にString
して$のtoStringまたは$コンバートオペレーター
{
$lookup: {
from: "configtarifas",
let: { "producto": {$toString: "$_id"} },
pipeline: [
{
$match: {
$expr: { $eq: ['$idProducto', "$$producto" ] },
}
}
],
as: "configs",
}
}