MongoDB - исключить внутренний массив, но включить его количество - PullRequest
2 голосов
/ 05 марта 2012

У меня есть таблица с именем devicesegments, каждая строка которой содержит большой массив, называемый устройствами.Из-за размера массива устройств меня попросили не включать его в мой запрос для страницы, которая перечисляет все devicesegment с, но включает только их количество.Это возможно?
То, что я делал раньше: простое db.devicesegments.find()

То, что я делаю сейчас: db.devicesegments.find({}, { devices : 0 })

Чего я хочу достичь: db.devicesegments.find({}, { devices : 0, devices.length : 1 })

Что-то вроде COUNT(devices) AS device_count!

Ответы [ 2 ]

0 голосов
/ 09 марта 2012

Поскольку в настоящее время нет способа сделать это без добавления нового device_count в мою таблицу, временное исправление, которое я применил, заключалось в извлечении всех данных из базы данных вместе с массивом devicesВ каждой строке добавьте поле для devices.length, а затем удалите массив devices перед отправкой данных.

0 голосов
/ 05 марта 2012

Ashkay, в настоящее время нет способа сделать это с Mongo. Как говорит @rompetroll, ваше приложение должно хранить поле «count» для каждого документа и тщательно $ inc, когда вы изменяете количество записей в массиве. Затем, когда вы запрашиваете документ, исключите массив как:

db.collection.find({}, {devices:0})

Если вы хотите запустить MongoDB 2.1, который является версией для разработки, структура агрегации предоставляет средства для вычисления размера массива в запросе:

http://www.mongodb.org/display/DOCS/Aggregation+Framework

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