shell运行JS程序
1、进行数学运算
> x = 200
200
> x / 5;
40
2、shell可以允许任何JaveScript程序,我们可以调用JaveScript的标准库
> Math.sin(Math.PI/2);
1
> new Date("2010/1/1")
ISODate("2009-12-31T16:00:00Z")
> new Date("2019/1/1")
ISODate("2018-12-31T16:00:00Z")
> "Hello World".replace("World", "MongoDB")
Hello MongoDB
3、可以定义和调用JaveScript函数
> function factorial(n){
... if(n <= 1) return 1;
... return n + factorial(n-1);
... }
> factorial(365);
66795
shell操作数据
创建
1、创建一个局部变量post,内容是代表文档的JaveScript对象
> post = {"title":"My Blog Post",
... "content":"Here's my blog post.",
... "date":new Date()}
{
"title" : "My Blog Post",
"content" : "Here's my blog post.",
"date" : ISODate("2019-03-17T09:12:51.098Z")
}
2、使用insert将post文档保存到blog集合中
> db.blog.insert(post)
WriteResult({ "nInserted" : 1 })
3、查看
> db.blog.find()
{ "_id" : ObjectId("5c8e1003c38926f35f6c022e"), "title" : "My Blog Post", "content" : "Here's my blog post.", "date" : ISODate("2019-03-17T09:12:51.098Z") }
读取
find会返回集合里面所有的文档。如果只是想查看一个文档,使用findOne
> db.blog.findOne()
{
"_id" : ObjectId("5c8e1003c38926f35f6c022e"),
"title" : "My Blog Post",
"content" : "Here's my blog post.",
"date" : ISODate("2019-03-17T09:12:51.098Z")
}
更新
1、增加comments键
> post.comments=[]
[ ]
2、替换更新文档
> db.blog.update({title:"My Blog Post"}, post)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
删除
remove用来从数据库中永久的删除文档:删除符合条件的文档
> db.blog.remove({"title" : "My Blog Post"});
WriteResult({ "nRemoved" : 2 })
> db.date.remove({}); //删除所有
shell 帮助文档
>help
>
- 输入函数的时候不要(),就可以看到JS源代码了
> db.foo.update
function (query, obj, upsert, multi) {
var parsed = this._parseUpdate(query, obj, upsert, multi);
var query = parsed.query;
var obj = parsed.obj;
var upsert = parsed.upsert;
var multi = parsed.multi;
var wc = parsed.wc;
var collation = parsed.collation;
var arrayFilters = parsed.arrayFilters;
var result = undefined;
var startTime =
(typeof(_verboseShell) === 'undefined' || !_verboseShell) ? 0 : new Date().getTime();
if (this.getMongo().writeMode() != "legacy") {
var bulk = this.initializeOrderedBulkOp();
var updateOp = bulk.find(query);
if (upsert) {
updateOp = updateOp.upsert();
}
if (collation) {
updateOp.collation(collation);
}
if (arrayFilters) {
updateOp.arrayFilters(arrayFilters);
}
if (multi) {
updateOp.update(obj);
} else {
updateOp.updateOne(obj);
}
try {
result = bulk.execute(wc).toSingleResult();
} catch (ex) {
if (ex instanceof BulkWriteError) {
result = ex.toSingleResult();
} else if (ex instanceof WriteCommandError) {
result = ex;
} else {
// Other exceptions thrown
throw ex;
}
}
} else {
if (collation) {
throw new Error("collation requires use of write commands");
}
if (arrayFilters) {
throw new Error("arrayFilters requires use of write commands");
}
this.getMongo().update(this._fullName, query, obj, upsert, multi);
// Enforce write concern, if required
if (wc) {
result = this.runCommand("getLastError", wc instanceof WriteConcern ? wc.toJSON() : wc);
}
}
this._printExtraInfo("Updated", startTime);
return result;
}
<MongoDB权威指南>学习