13

nodejs の JavaScript mongodb ドライバーを使用しています。JavaScript 関数でこのクエリを実行したい:

db.mycollection.find({Zip:/^94404/}); 

mongo クライアントは、この条件に一致する 8 つのドキュメントを取得します。ただし、私の JavaScript コードはドキュメントを取得しません。

    DataProvider.prototype.findByZipcode = function(zipCode, callback) {
        this.getCollection(関数(エラー、コレクション) {
            もし(エラー)
                コールバック (エラー);
            そうしないと {
                var qs = '{Zip:/^'+zipCode+'/}';
                collection.find(qs).toArray(関数(エラー、結果) {
                    もし(エラー)
                        コールバック (エラー);
                    そうしないと
                        コールバック (null、結果);
                });
            }
        });
    };

私も試しました

<pre>
var qs = {Zip: '/^'+zipCode+'/'};
</pre>

ところで、完全一致は問題なく動作することがわかりましたが、それは私が望んでいるものではありません。

すなわち。

<pre>
var q = {'Zip' :zipCode};
</pre>
4

2 に答える 2

29

あなたはほとんどそれを持っています。文字列内の正規表現で終わり、奇妙な郵便番号がない限り、何かを見つけるために文字列を探し続けます。 '/^94404/'

JavaScript で文字列から正規表現オブジェクトを作成する最も簡単な方法は、次を使用することnew RegExp(...)です。

var query = { Zip: new RegExp('^' + zipCode) };

次に、次のことができます。

collection.find(query).toArray(...)

そのようなことは MongoDB シェルで機能し、同様のことが Ruby インターフェースで機能するため、JavaScript インターフェースでも機能するはずです。

于 2012-06-17T19:07:07.180 に答える