2012-03-05 2 views
2

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

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

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

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

ответ

0

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

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

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

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

0

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