Bash MongoDB-插入记录时转义引号

Bash MongoDB-插入记录时转义引号,bash,mongodb,Bash,Mongodb,我在尝试编写bash scritp将一些数据从一个数据库复制到另一个数据库时遇到了一个奇怪的问题 为了让事情变得简单,我将用下面的例子来说明这个问题: 比方说,我们有一个文件,其中包含要在mongo客户机中执行的mongo insert命令。使用Bash将: cat file.json | mongo --verbose --host $HOST 在我们在记录内容中使用qoutes之前,这一切都很正常。 例如: use somedb; db["collection"].insert({ "fi

我在尝试编写bash scritp将一些数据从一个数据库复制到另一个数据库时遇到了一个奇怪的问题

为了让事情变得简单,我将用下面的例子来说明这个问题:
比方说,我们有一个文件,其中包含要在
mongo客户机中执行的mongo insert命令。使用
Bash
将:

cat file.json | mongo --verbose --host $HOST
在我们在记录内容中使用qoutes之前,这一切都很正常。
例如:

use somedb;
db["collection"].insert({ "field": "test" }) 
#This of course works

db["collection"].insert({ "field": "test \" test" }) 
#But this doesn't

db["collection"].insert({ "field": "test \\" test" }) "#<-For syntax coloring
#I thounght maybe double quoting will help, but this also doesn't work

db["collection"].insert({ "field": "\"test\"" }) 
#This SUPRISINGLY works!!!
使用somedb;
db[“collection”].insert({“field”:“test”})
#这当然有效
db[“collection”].insert({“field”:“test\”test“})
#但事实并非如此
db[“collection”].insert({“field”:“test\\“test”})”#这个问题有一个解决方案,它在2.5.0中得到了修复

目前,插入时,可以使用unicode点作为双引号:

>db.foo.insert({“字段”:“test\u0022 test”})
>db.foo.find()
{“_id”:ObjectId(“533455e563083f9b26efb5c2”),“字段”:“test\”test“}