2013-08-08 2 views
-1

Есть ли способ, которым я могу использовать $ где в совокупности.

моя коллекция { "ID": 5, оценка: 70}, я попытался {$ спичкой: {$, где: "this.id> 5 & & this.score> 70"}}, но это Безразлично» t, я должен использовать, где, поскольку мой api является interface для mong, который получает запрос от пользователя в общем тексте, таком как «SQL», так и в любом случае я могу использовать $ где в совокупности, потому что, как говорится в документе, я не могу использовать он с $ match, он отлично работает с обычной находкой, но как заставить его работать с агрегированным запросом?

+0

$, где было специально предотвращено, но удалено JIRA, в структуре агрегации оно просто убивает производительность. – Sammaye

+0

Используйте правильные правила, чтобы сделать вопрос более презентабельным, чтобы его стало легко читать. –

ответ

1

Нет, но вы не должны использовать $where для этого:

{'$match': {'id': {'$gt': 5}, 'score': {'$gt': 70}}} 

Таким образом, вы должны были бы иметь пользователю ввести свой запрос в виде строки JSON, как выше, а затем JSON.parse струны на чтобы превратить его в объект, который можно использовать с $match.

В качестве побочного примечания производительность $where ужасна, поэтому базовый API на $where запросах - очень плохая идея.

+0

Я могу это сделать, но в случае OR и AND их могут быть вложенными AND и OR, поэтому в этом случае увеличивается вероятность ошибки –

+0

@PhalguniMukherjee. Но вероятность опасных инъекций скрипта уменьшается, что должно быть еще более важным. – Philipp

Смежные вопросы