MongoDB'错误:在Node.js上检测到非ascii字符'

时间:2011-07-16 02:59:04

标签: mongodb node.js mongoose

我正在尝试将一大块数据解析到一个新的MongoDB数据库中,当我运行该作业时,我在db.myCollection.find()时遇到错误。
错误是error: non ascii character detected

我正在使用Node.js和Mongoose来填充数据库。我见过的可能导致问题的唯一字符是',-,但我在所有这些字符上都有.replace。我试图逃避它们(\),我试图完全删除它们,似乎没有任何工作。

我最大的问题是我在保存对象时没有出现任何错误,我只是在尝试查看集合时收到该消息。

有没有关于消毒MongoDB输入的信息?

3 个答案:

答案 0 :(得分:1)

如果是字符串数据,那么可以确保在插入之前将其编码为UTF8。大多数司机应该检查一下,但是在Mongoose司机中可能会被忽视。 MongoDB中的所有字符串都存储为UTF8,由BSON规范定义。

答案 1 :(得分:1)

刚刚遇到同样的问题。 Ubuntu (EC2)上的MongoDB 版本:1.8.2 + Mongoose 3.3.1 (NodeJS v0.8.14

  

> db.tweets.find();

     

错误:检测到非ascii字符

一致认为升级到最新版本的MongoDB( 2.2 )将解决问题。

通过发出命令检查我正在运行的MongoDB版本:

  

$ mongod --version

     

db version v1.8.2 ,pdfile版本4.5 -   10月24日星期三15:43:13 git版本:nogitversion

确认如果mongo当前正在运行:

  

$ ps -deaf | grep mongod

     

mongodb 15408 1月6日06? 13:50:00 / usr / bin / mongod --config /etc/mongodb.conf

Shutdown MongoDB

  

$ ./mongo

     

>使用管理员

     

> db.shutdownServer()

     

服务器应该关闭......

然后按照以下说明进行升级:How to Install MongoDB on Ubuntu

将10 Gen(MongoDB的创建者)公钥添加到apt-get,以便您信任他们的包:

  

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

     

$ echo“deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen”>> /etc/apt/sources.list.d/10gen.list

更新您的包裹:

  

$ sudo apt-get update

安装10gen的MongoDB Debian / Ubuntu软件包:

  

$ sudo apt-get install mongodb-10gen

     

以下包将删除:     的 mongodb的

     

将安装以下 NEW 包:     的的mongodb-10gen的

如果您收到错误,请尝试:

  

$ apt-get autoremove

确认 mongodb 用户/组有权写入数据目录:

  

$ sudo chown -R mongodb:mongodb / var / lib / mongodb /.

使用以下命令重启MongoDB:

  

$ mongod --fork --dbpath / var / lib / mongodb / --smallfiles --logpath /var/log/mongodb.log --logappend

一旦你有新版本的MongoDB,“非ascii”字符问题就应该消失了。 : - )

答案 2 :(得分:0)

当我意外地做到这一点时,我得到了它

BasicDBObject bdb; bdb.put(“myfield”,new ObjectId(String.valueOf(objectId)));

然后将bdb保存到mongo。