2017-04-03 15 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用於字符串模式匹配。

在數字模式匹配,這似乎是你在找什麼,證明在這個帖子: MongoDB Regex Search on Integer Value

這裏有一個具體的例子,可以幫助...文檔會被插入,然後匹配使用$ where。結果在最後一行:

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