MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Filtern Sie das Array mit dem $in-Operator in der $project-Phase

Seit $in im Aggregatbetrieb für Arrays nicht unterstützt wird, wäre die Alternative für Sie, $setIsSubset zu verwenden . Weitere Informationen hierzu finden Sie unter diesem Link. Die aggregierte Abfrage würde jetzt wie folgt aussehen:

db.test.aggregate([
{
    $project: {
        'filtered_users': {
            $filter: {
                input: '$users',
                as: 'user',
                cond: {
                   $setIsSubset: [['x'], '$$user.accounts']           
                }
            }
        }
    }
}])

Diese Abfrage gibt nur Elemente zurück, die [x] haben als Teilmenge des Arrays in user.accounts .