提示している文字列はmongodbシェルクエリです。この文字列にはmongodbシェル固有のデータ型が含まれているため、mongodbシェル内でのみ使用できます。これらのクエリは別の(javascript)環境ではないため、解析または評価することはできません。有効なJSON。したがって、eval
、またはJSON.parse
特定のデータ型のため、機能しません。
さまざまな環境で使用するためにmongodbクエリをシリアル化する場合は、MongoDB拡張JSONを使用できます。
https://docs.mongodb.org/v3.0/ reference / mongodb-extended-json /
これは、mongodbデータ型を含むことができる標準のJSONです。クエリはMongoDB拡張JSONでこれを希望します。
{
"_id": {
"$oid": "536b07935c89be214c000009"
},
"date": {
"$date": "2012-12-19T06:01:17.171Z"
},
"mail": {
"$regex": "test",
"$options": "i"
}
}
このような文字列を解析または評価してnode.jsmongodbドライバーに渡す場合は、ライブラリを使用してこれを適切なNode.jsMongoDBDriverオブジェクトに逆シリアル化する必要があります。
このライブラリを使用して、次のことを行うことができます:
https://www。 npmjs.com/package/mongodb-extended-json
ブラウザでこのライブラリを使用して、クエリを作成することもできます。または、mongodbクエリを手動で作成することもできます。
mongodbシェルクエリをMongoDB拡張JSONに自動的に変換できるプラグイン/npmパッケージを知りません。自分自身のタイプ(ISODate、ObjectId)のいくつかを実装することにより、それらを自動的に変換しようとすることができます。ただし、mongodbシェルとmongodb nodejsドライバーの間に完全な互換性があることは決してありません。多くのメソッドには異なるシグネチャとリターンタイプがあり、カーソルの動作も異なります...
このプロジェクトもあります。これは、公式にサポートされているmongodb nodejsドライバーの代替であり、実際にそれを評価する場合はシェルをもう少し模倣しようとしますが、特定のクエリには役立ちません。変換する必要があります。
https://docs.mongodb.org/ecosystem/ drivers / node-js /