如何通过MongoBinData()函数查找存储为bin数据的数据?

时间:2013-10-17 06:49:37

标签: php mongodb

使用MongoDB时遇到问题

当我直接将字符串存储到MongoDB中时,会导致错误:

  

非utf8字符串:fran ai

但我不想将字符串编码为UTF-8,所以我使用 MongoBinData()来执行此操作,现在可以将数据存储到MongoDB中。

但是当我想在数据库中查找/搜索某些内容时,它什么都不返回

我的查找方法是

find(array("lines" =>array("bin"=> new MongoRegex("/1234/i"))));

并返回NULL(数据库有许多包含“1234”的字符串)

你可以给我一些建议吗?

1 个答案:

答案 0 :(得分:1)

正则表达式仅适用于UTF-8编码的字符串。因此,您必须将字符串转换为UTF-8以使其可搜索。当你坚持不管出于什么原因保留你的字符编码时,你唯一的另一个选择就是每个字符串都有两个字段,一个是utf8-represenation,另一个是你自己编码的BinData表示。