我需要执行什么确切的代码,在bash中将文档插入到mongodb中。目前,我可以通过bash脚本查看mongodb中的文档,但是插入操作无法正常工作。
你可以从一个JavaScript文件中注入JavaScript代码:
mongo 127.0.0.1/MyDatabase script.js
使用 script.js:
var document = {
name : "document_name",
title : "document_title"
};
db.MyCollection.insert(document);
或直接:
mongo 127.0.0.1/MyDatabase --eval 'var document = { name : "document_name", title : "document_title" }; db.MyCollection.insert(document);'
--eval
选项,因为如果有多个条目,很难阅读,那么您可以使用bash
的heredoc。
您可以在终端中输入:
-bash-4.1$ mongo mongodb://myServerAddress/myDbName <<EOF
> db.myCollectionName.insert({
> name: "doc name",
> title: "doc title"
> })
> EOF
结果:
MongoDB shell version v3.4.1
connecting to: mongodb://myServerAddress/myDbName
MongoDB server version: 3.0.7
WARNING: shell and server versions do not match
WriteResult({ "nInserted" : 1 })
bye
-bash-4.1$
>
。
对于脚本内部使用,应该按以下方式:
#!/usr/bin/env bash
mongo mongodb://myServerAddress/myDbName <<EOF
db.myCollectionName.insert({
name: "doc name",
title: "doc title"
})
EOF
sample_db
数据库,集合为products_coll
echo '{ item: "card", qty: 115 }' | \
sed 's@^@db.products_coll.insert( @; s@$@ ) @' | mongo sample_db
MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017/sample_db
MongoDB server version: 3.6.3
WriteResult({ "nInserted" : 1 })
bye
mongoexport -d sample_db -c products_coll
{"_id":{"$oid":"5d27e83152a049227799710e"},"item":"card","qty":115.0}
script.js
中使用console.log()
,你会得到一个错误,说它未定义。相应的,在Mongo脚本中,等效的方法是print()
。而printjson()
也很有帮助。 - Kip