sql >> Databáze >  >> NoSQL >> MongoDB

Vyhledávací kanál:`$match` místní pole `$in` pole, když z hodnoty je pole a má být nalezena místní hodnota

Můžete to prosím zkusit:

db.collection_a.aggregate(
[{ $match: { _id: ObjectId(' ') } },
// other $lookups...
{
    $lookup: {
        as: 'collection_b',
        from: 'collection_b',
        let: { id: { $toString: '$_id' } },
        pipeline: [
            {
                $addFields: {
                    "related": {
                        "$cond": {
                            "if": {
                                "$ne": [{ "$type": "$related" }, "array"]
                            },
                            "then": [],
                            "else": "$related"
                        }
                    }
                }
            },
            {
                $match: {
                    $expr: { $in: ['$$id', '$related'] }
                }
            }
            // sorts, projections, etc...
        ]
    }
}
           // sorts, projections, etc...
]);

Jak se říká $in bere pole jako druhý parametr a hodnotu, kterou hledáte, jako první parametr.




  1. Jak zjistím čas, kdy je můj klíč uložen v Redis Cache/db?

  2. Slovník Pythonu:odstranění u' znaků

  3. Používání faset v agregačním rámci C# s více fasetami, Unwind a sortByCount

  4. Je možné v Mongu efektivně třídit, seskupovat a omezovat pomocí potrubí?