1

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

我正在使用 Node.js 和 Mongoose 来填充数据库。我见过的唯一可能导致问题的字符是',-我已经对所有这些字符进行了 .replace 。我尝试转义它们(\),然后尝试完全删除它们,但似乎没有任何效果。

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

有没有关于清理 MongoDB 输入的信息?

4

3 回答 3

1

如果它是字符串数据,那么可能在插入之前确保它被编码为 UTF8。大多数驱动程序都应该检查这一点,但在 Mongoose 驱动程序中可能会忽略它。MongoDB 中的所有字符串都存储为 UTF8,由 BSON 规范定义。

于 2011-07-16T04:01:39.613 回答
1

只是有同样的问题。MongoDB版本:Ubuntu (EC2)上的1.8.2 + Mongoose 3.3.1 ( NodeJS v0.8.14 )

> db.tweets.find();

错误:检测到非 ascii 字符

共识是升级到最新版本的 MongoDB ( 2.2 ) 将解决这个问题。

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

$ mongod --版本

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

确认mongo 当前是否正在运行:

$ ps -聋 | grep蒙戈

MongoDB 15408 1 0 Jun06 ?13:50:00 /usr/bin/mongod --config /etc/mongodb.conf

关闭MongoDB

$ ./mongo

> 使用管理员

> db.shutdownServer()

服务器应该宕机了...

然后按照以下说明进行升级:如何在 Ubuntu 上安装 MongoDB

将 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 更新

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

$ sudo apt-get install mongodb-10gen

以下软件包将被删除mongodb

将安装 以下新软件包: mongodb-10gen

如果出现错误,请尝试:

$ apt-get 自动删除

确认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”字符问题就应该消失了。:-)

于 2012-10-26T14:54:13.400 回答
0

当我不小心这样做时,我明白了

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

然后将 bdb 保存到 mongo。

于 2012-02-10T06:58:55.697 回答