我试图在mongodb中进行类似于SQL示例的查询:
SELECT * from example where contactphone like '4832%';
我的第一个想法是做一些事情:
db.example.find({ contactphone: /^4832/ })
但它不会返回我想要的内容,因为联系电话是一个号码。
有没有好的做法 - 在数字mongodb上进行此类操作?
编辑:电话号码可能是一个不好的例子。让我们说我需要找到包含数字9的所有数字。我怎么能得到那个?
答案 0 :(得分:4)
不要将电话号码存储为整数。将它们存储为字符串。如果您的值只包含数字且算术无意义,如邮政编码,银行帐号或电话号码,那么将其存储为数字并没有多大意义。
顺便说一下,所有这些都适用于几乎所有数据库,而不仅仅是MongoDB。
但是,如果你绝对决定将它们保留为数字,那么你可以做两件事。
$gt
和$lt
运算符来搜索范围。 contactphone:{$gt:5556000, $lt:5556999}
会找到所有带有5556xxx
模式的数字。$where
- 查询,该查询使用javascript函数在内部将每个数字转换为字符串,然后将正则表达式应用于该字符串。 $where: "String(this.contactphone).match(/^4832/) != null"
。我希望你的数据库中没有很多文档,因为当你这样做时,这个查询可能需要一段时间。