如何将文档从 bash 脚本插入到 mongodb?
How can I insert a document from a bash script to mongodb?
要使用 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$
如果您想将它保留在脚本中,只需删除 >
,它实际上是提示输入多行命令。
对于in-script使用,应该如下:
#!/usr/bin/env bash
mongo mongodb://myServerAddress/myDbName <<EOF
db.myCollectionName.insert({
name: "doc name",
title: "doc title"
})
EOF
将一些 JSON 插入 Mongo 数据库 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}
要使用 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$
如果您想将它保留在脚本中,只需删除 >
,它实际上是提示输入多行命令。
对于in-script使用,应该如下:
#!/usr/bin/env bash
mongo mongodb://myServerAddress/myDbName <<EOF
db.myCollectionName.insert({
name: "doc name",
title: "doc title"
})
EOF
将一些 JSON 插入 Mongo 数据库 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}