2016-03-27 19 views
1

JavaScriptからJSONドキュメントとして私のサーバーにクエリを送信しています。このクエリは、私の文書を見つける際にMongooseが使用する正規表現を含んでいなければなりません。大文字と小文字を区別しない正規表現をJSON経由でマングースに送信する

{ 
    query: { 
    foo: "^bar" 
    } 
} 

上記のクエリが正常に動作しますが、私はそれが大文字と小文字を区別することにしたいです。

{ 
    query: { 
    foo: "/^bar/i" 
    } 
} 

ない仕事を(私はCastErrorを得る)い。 RegExを引用符なしで送信することはできません。これはJSONであるためです。

サーバー側の変更なしでこれを動作させる方法はありますか?

+0

' "foo" という:/バー/ i'または' "FOO":{ "$の正規表現": "バー"、 "$オプション": "I"} 'あるいは' "foo" という:{ "$ regex":/ bar /、 "$ options": "i"} '。十分に文書化されている。参照:['$ regex'](https://docs.mongodb.org/manual/reference/operator/query/regex/)。 Mongooseから ''キャストエラー ''を受け取った場合は、実際にデータを "保存"してクエリを発行しようとしていないことを意味します。 BTW Regex **は**有効なBSON型ですので、MongoDB文書にそのまま保存することも可能です。 –

+1

@BlakesSeven私はこれをRESTに送信しています。だからJSON。 BSONではありません。 '$ options'はうまくいったので、うれしいですね。あなたが私に対して何を持っているのかがわからない場合、私はこのサイトの50%です。 – Harangue

答えて

0

上記のコメントのBlake Sevenの回答では、$optionsフィールドを標準的なRegExフラグの代わりに使用できます。

Schema.find({"foo": { "$regex": "bar", "$options": "i" }); 
関連する問題