Mongodb, как получить $ тип "объекта" - PullRequest
1 голос
/ 18 июня 2019

Может кто-нибудь сказать мне, пожалуйста, как получить элементы, поле которых является объектом $ type? Проблема в том, что Mongodb включает в себя массив $ type (который содержит объекты) . Но я хочу не массивы, а объекты.

{fieldName: {$type: 3}}

возвращает такие элементы, как:

{
    _id: xxxx,
    fieldName: [
        {a: 'aaa'}, 
        {b: 'bbb'}
    ]
}

1 Ответ

2 голосов
/ 18 июня 2019

Вы можете использовать оператор $ type Aggregation Framework:

db.collection.aggregate([
    {
        $match: {
            $expr: {
                $eq: [ { $type: "$fieldName" }, "object" ]
            }
        }
    }
])

В отличие от оператора запроса $ type, который сопоставляет элементы массива на основе их типа BSON, $ typeОператор агрегации не проверяет элементы массива.Вместо этого, когда передается массив в качестве аргумента, оператор агрегации $ type возвращает тип аргумента, то есть «массив».

MongoDB Playground

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...