2017-04-03 54 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 }