我正在尝试将一大块数据解析到一个新的MongoDB数据库中,当我运行该作业时,我在db.myCollection.find()
时遇到错误。
错误是error: non ascii character detected
。
我正在使用Node.js和Mongoose来填充数据库。我见过的可能导致问题的唯一字符是'
,,
和-
,但我在所有这些字符上都有.replace。我试图逃避它们(\
),我试图完全删除它们,似乎没有任何工作。
我最大的问题是我在保存对象时没有出现任何错误,我只是在尝试查看集合时收到该消息。
有没有关于消毒MongoDB输入的信息?
答案 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
$ ./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。