使用bash插入mongodb

时间:2017-02-20 12:05:17

标签: bash mongodb

我试图使用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

我有什么不对的吗?

1 个答案:

答案 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