2017-04-03 17 views
0

私はデータベースエンジンとしてMongoDBを使用しており、特定のキーワードに基づいてfindというクエリを実行しようとしています。データフィールドの全てがStringの一種であるならば、私はこのようなfindクエリを実行できます。ただしMongoDB - キーワード別に検索 - 異なるデータ型

test.find({ 
    $or: [ 
     {'field1': {'$regex': req.body.keyword} }, 
     {'field2': {'$regex': req.body.keyword} } 
    ]}) 
    .then(function(records) { 
     if(records.length >= 1) { 
      return res.json({error: false, message: null, data: records}); 
     } else { 
      return res.json({error: false, message: "No results", data: null}); 
     } 
    }); 

を、私は他のどのタイプで使用することはできませんNumber$reqexのフィールドタイプを持っているいくつかのフィールドを持っていますStringより。

異なるデータ型でfindクエリを実行することは可能ですか?どんな助けやアイデアや考えも大歓迎です!

+0

一部のドキュメントでは、_field1_に数値が含まれていますか?あるいは、常に数字である別のフィールドについて話していますか?その場合、どのような種類のデータをマッチさせようとしているのか説明できますか? –

答えて

0

数値を文字列に変換して$regex演算子に渡すと、.toString()メソッドを使用してみてください。

0

より一般的な質問に最初に答えるには、はい、文字列だけでなく、異なるデータ型でも検索を実行することができます。 $ regexは文字列のパターンマッチングのためのものです。あなたが探しているもののようです数字上

パターンマッチングは、この記事で実証されています はMongoDB Regex Search on Integer Value

ここで...文書が挿入されて助けることが具体的な例だと、それが一致していますどこで$を使用しています。結果は最後の行にあります。

db.B_CooperA.insert({number:51}) 
db.B_CooperA.find({ $where: "/^51*/.test(this.number)" }) 
{ "_id" : ObjectId("58e1e4cfb8400a4eb8032748"), "number" : 51 } 
関連する問題