Фильтрующий массив в mongodb - PullRequest
2 голосов
/ 08 мая 2020

Я хочу запросить документ, который выглядит как -:

{
    fname : "Michael",
    fields: [
                {
                    field:"[A,B,C,D]"
                },
                {
                    field:"[A,C,D]"
                }
            ]
}

Теперь из этого документа я хочу, чтобы результат был:

    {
            fname : "Michael",
            fields: [
                        {
                            field:"[A,C,D]"
                        }
                    ]

    } 

Я использую этот запрос, чтобы получить результат, но я получаю сообщение об ошибке: -

db.mycollection.aggregate([
    {
        $project : {
            _id : 0,
            fields : { $filter : { input : "$fields", as : "f", cond : {"$$f.field" : {$nin : [/B/]}}}}}
        }
    }
])

Может ли кто-нибудь помочь в устранении ошибки?

1 Ответ

1 голос
/ 08 мая 2020

Вы можете использовать $ indexOfBytes , чтобы проверить наличие одного символа (в противном случае возвращает -1):

db.collection.aggregate([{
    $project : {
        _id : 0,
        fields : { 
            $filter : { 
                input : "$fields", 
                as : "f", 
                cond : { $eq: [ { "$indexOfBytes": [ "$$f.field", "B" ] }, -1 ] }
            }
        }
    }
}])

Mon go Playground

...