GOOGLE ADS

среда, 13 апреля 2022 г.

Получить имена всех ключей в коллекции

Я хотел бы получить имена всех ключей в коллекции MongoDB.

Например, отсюда:

db.things.insert( { type: ['dog', 'cat'] } );
db.things.insert( { egg: ['cat'] } );
db.things.insert( { type: [] } );
db.things.insert( { hello: [] } );

Я хотел бы получить уникальные ключи:

type, egg, hello


Решение проблемы

Вы можете использовать агрегирование с новым $objectToArrayоператором агрегирования в версии 3.4.4, чтобы преобразовать все верхние пары ключ-значение в массивы документов, а затем с помощью и $unwindдля получения отдельных ключей во всей коллекции. (Используйте для ссылки на документ верхнего уровня.)$group$addToSet$$ROOT

db.things.aggregate([
{"$project":{"arrayofkeyvalue":{"$objectToArray":"$$ROOT"}}},
{"$unwind":"$arrayofkeyvalue"},
{"$group":{"_id":null,"allkeys":{"$addToSet":"$arrayofkeyvalue.k"}}}
])

Вы можете использовать следующий запрос для получения ключей в одном документе.

db.things.aggregate([
{"$match":{_id: "<<ID>>"}}, /* Replace with the document's ID */
{"$project":{"arrayofkeyvalue":{"$objectToArray":"$$ROOT"}}},
{"$project":{"keys":"$arrayofkeyvalue.k"}}
])

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...