Ответ 1
Как уже было сказано, это невозможно. Проблема с сервером, с которой вы связаны, по-прежнему находится под "проблемами, которые мы не уверены".
MongoDB имеет некоторый интеллект, окружающий использование массивов, и я думаю, что это часть сложности, связанной с такой функцией.
Возьмите следующий запрос db.foo.find({ 'a.b' : 4 } )
. Этот запрос будет соответствовать следующим документам.
{ a: { b: 4 } }
{ a: [ { b: 4 } ] }
Итак, что здесь делает "подстановочный знак"? db.foo.find( { a.* : 4 } )
Соответствует ли он первому документу? Как насчет второго?
Кроме того, что это означает семантически? Как вы описали, запрос эффективно "находит документы, где любое поле в этом документе имеет значение 4". Это немного необычно.
Существует ли конкретная семантика, которую вы пытаетесь достичь? Возможно, изменение структуры документа предоставит вам нужный вам запрос.