web-dev-qa-db-ja.com

ノードjsで$ regex mongodbクエリを使用すると機能しない


ノードjsから、大文字と小文字を区別せずにキーワードに基づいてドキュメントを取得しようとしています。 mongo dbコンソールから直接試すと、結果を確認できます。

db.users.findOne({"displayName":{$regex: /.*abc./, $options:"i"}})

しかし、ノードjsで同じことを試みると、空の結果が得られます。

var selector = { "displayName": {$regex: "/.*abc./", $options:"i"}}

これはJavaScriptではない正規表現によるものです。
誰でも私を助けてくれませんか?.

16
Soorya Prakash

$regex の値は、一致する文字列パターンまたは正規表現オブジェクトのいずれかである必要があります。文字列パターンを渡すときは、node.jsコードで行っているような/区切り文字を含めないでください。

したがって、これらのいずれかがnode.jsで機能します。

var selector = {"displayName": {$regex: ".*abc.", $options:"i"}}

OR

var selector = {"displayName": {$regex: /.*abc./, $options:"i"}}
23
JohnnyHK

これを試して頂けますか?.

var getValue = "abc";

db.users.findOne({ displayName: new RegExp(regexValue, "i") }, function(err, res) {
  if (err) {
    console.log(err);
  } else {
    console.log(res.length);
  }
});
12
Soe Naing Tun

Mongodbコンソールでこのクエリを試してください

db.users.findOne({"displayName":{$regex: ".*abc", $options:"i"}})

そしてnodejs var selector = users.find({ "displayName": {$regex: ".*abc", $options:"i"}})

ここでusers =はコレクション名です

2
Ganesh Apune