sql >> データベース >  >> NoSQL >> MongoDB

ルックアップパイプライン:from valueが配列であり、ローカル値が検出される場合の`$match`ローカルフィールド`$in`配列

    これを試していただけますか:

    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...
    ]);
    

    $inと書かれているように 配列を2番目のパラメーターとして受け取り、検索している値を最初のパラメーターとして受け取ります。




    1. ユーザーフォロワー/フォロワーの最も効率的なクエリに適したMongoDBドキュメント構造は何ですか?

    2. マングースはmongodbに接続しません

    3. mongodbシェルのforEachで更新

    4. ロックファイルを作成/開くことができません:/data/mongod.lock errno:13アクセスが拒否されました