Строка, которую вы представляете, представляет собой запрос оболочки mongodb. Эта строка содержит специальные типы данных оболочки mongodb и, как таковая, используется только внутри оболочки mongodb. Вы не можете анализировать или оценивать эти запросы в другой среде (javascript), потому что они недействительны JSON. Следовательно, eval
, или JSON.parse
, даже не работал бы из-за конкретных типов данных.
Если вы хотите сериализовать запросы mongodb для использования в разных средах, вы можете использовать MongoDB Extended JSON.
https://docs.mongodb.org/v3.0/reference/mongodb-extended-json/
Это стандартный JSON, который может содержать MongoDB типов данных. Ваш запрос понравится в MongoDB extended JSON.
{
"_id": {
"$oid": "536b07935c89be214c000009"
},
"date": {
"$date": "2012-12-19T06:01:17.171Z"
},
"mail": {
"$regex": "test",
"$options": "i"
}
}
Если вы хотите, чтобы разобрать или оценить строку, как это передать его с собой на Node.js MongoDB водителя, вам нужно будет использовать библиотеку для десериализации это надлежащего Node.js MongoDB объекта драйвера.
Вы можете использовать эту библиотеку, чтобы сделать это:
https://www.npmjs.com/package/mongodb-extended-json
Вы также можете использовать эту библиотеку в вашем браузере, чтобы построить запросы. Или вы можете создавать запросы mongodb вручную.
Я не знаю о пакете plugin/npm, который позволит вам автоматически конвертировать запросы оболочки mongodb в MongoDB Extended JSON автоматически. Вы можете попытаться преобразовать их автоматически, реализовав некоторые из ваших типов (ISODate, ObjectId). Однако у вас никогда не будет полной совместимости между оболочкой mongodb и драйвером mongodb nodejs, многие методы имеют разные подписи и типы возврата, курсоры работают по-другому и т. Д.
Существует также этот проект, альтернативный официально поддерживаемый драйвер mongodb nodejs, который пытается имитировать оболочку немного больше, если вы действительно это цените, но это не поможет вам с вашим конкретным запросом, вам все равно придется его преобразовать.
https://docs.mongodb.org/ecosystem/drivers/node-js/
Каково значение 'query' в вашем коде? Это просто строка, содержащая значение, которое вы вставили выше? Как именно ваш код выходит из строя? Что такое сообщение об ошибке? Вам нужно предоставить дополнительную информацию, чтобы люди могли вам помочь. –
@mbaird Исправлено, не нужно показывать код, который я пытался с его сбоем, и что я не привязан к этому решению – arkihillel
Используете ли вы какой-либо конкретный API MongoDB для узла, или вам все равно, какой из них использовать? –