我试图使用bash将集合插入数据库。到目前为止,这是我提出的。
mongo --port 27000 --eval "rs.status().members.forEach(function(m) { if(m.stateStr === \'PRIMARY\') {var t = m.optime.t.toNumber(); var output = { Primary : m.name, Elections : t, Date: m.optimeDate, }}}); use history; db.history.insert(output));"
但我收到此错误
2017-02-20T05:31:25.342-0500 E QUERY SyntaxError: Unexpected identifier
我有什么不对的吗?
答案 0 :(得分:0)
我看到了几个问题:\'PRIMARY\'
处的语法 - 您不必在此处转义引号,m.optimeDate, }
您没有正确定义文档,而use history;
- 您应该不要在一个`--eval js``语句中切换db。
而是使用end of file
,就像这里:
vao@vao-VirtualBox:~$ mongo <<EOF
> var output = 1;
> use history;
> print(output);
> EOF
MongoDB shell version v3.4.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.2
switched to db history
1
bye
所以在你的情况下,它将是:
mongo <<EOF
rs.status().members.forEach(function(m) {
if(m.stateStr === 'PRIMARY') {
var t = m.optime.t.toNumber();
var output = { Primary : m.name, Elections : t, Date: m.optimeDate};
}
});
use history;
db.history.insert(output);
EOF