У меня есть коллекция пользователей, каждая из которых может быть подписана на одну или несколько служб. Каждая служба имеет некоторые метаданные, включая количество кредитов, которые пользователь имеет для этой услуги.
Как я могу найти все пользовательские объекты, которые имеют менее 50 кредитов для какой-либо службы, если у меня нет способа узнать, какие ключи объектов службы будут?
Понятно, что это будет что-то вроде этого, что не работает:
db.users.find({services.*.credits : {$lt : 50}})
Коллекция пользователей:
{
_id: 4f0ea25072139e4d2000001f,
services : {
a : { credits : 100, score : 2000 },
b : { credits : 200, score : 300 },
c : { credits : 10, score : 1300 }
}
},
{
_id: 4f0ea25072139e4d2000001f,
services : {
f : { credits : 68, score : 14 },
q : { credits : 1000, score : 102 },
z : { credits : 59, score : 352 }
}
}
Здесь объясняется другой пример того, что я хочу сделать, если это неясно здесь: http://www.mongodb.org/display/DOCS/Advanced+Queries#comment-346075854