Я предполагаю, что они чувствовали, что слишком часто вы забудете цитаты и напишите {a: {>: 2}}
.В JavaScript и некоторых других языках вполне нормально не указывать кавычки при написании $gte
(например, {a: {$gte: 2, $lte: 4}}
работает, как и {"a": {"$gte": 2, "$lte": 4}}
. Это экономит много времени при наборе текста в монгоshell.
Я не уверен, что вы спрашиваете об этом, но позвольте мне ответить на вопрос, почему язык запросов больше не похож на SQL, например, почему мы не можем написать запрос как a >= 2 && a <= 4
(кроме $where
запросов). Причина этого в том, что единственный способ выполнить этот запрос - это проанализировать JavaScript и выполнить для каждого документа. Было бы невозможно использовать индексы, и каждый документ имел быдля преобразования из данных BSON, хранящихся на диске, в объект JavaScript в памяти (и, кстати, это то, что происходит при выполнении запроса $where
, сокращении группы или карты).
элегантность использования нотации JSON / BSON для запросов заключается в том, что они являются чистыми данными и могут обрабатываться и анализироваться как на стороне клиента, так и на стороне сервера. На сервере запрос никогда не проходитинтерпретатор JavaScript, скорее он подается в планировщик запросов, который разбирает его на части, формулирует план и выполняет его.На клиенте запрос может быть построен с использованием собственных структур данных языка клиента и преобразован в универсальное представление (т. Е. BSON) только при передаче на сервер.