mongoDB Shell的基本操作

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权威指南>学习

猜你喜欢

转载自blog.csdn.net/zhizhengguan/article/details/88622662