mongoDB中的基本操作

最近公司开发使用的MongoDB来做数据存储,以前大致看过MongoDB的数据库操作,上手项目也能勉强使用,但是趁着放假有时间还是要系统的学习下MongoDB的操作,要不然以后在使用的时候,容易出现自己都不知道的错误那就尴尬了。下面只是MongoDB的一些简单操作。后期在使用到复杂的操作,再百度用就行了。

命令:

1,  show dbs;

2,  db:显示当前数据库对象或者集合。

3,  use [数据库]:连接到指定数据库。如果不存在自动创建数据库。

4,  db.dropDatabase():删除当前数据库。

5,  db.createCollection(name,options)//默认不需要创建集合,在插入数据的时候,会自动创建。

         Options可以为:

         capped:布尔-(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。当该值为 true 时,必须指定 size 参数。

         AutoIndexld:布尔-(可选)如为 true,自动在 _id 字段创建索引。默认为 false。

         size:数值-(可选)为固定集合指定一个最大值(以字节计)。如果 capped 为 true,也需要指定该字段

         max:数值--(可选)指定固定集合中包含文档的最大数量。

6,  db.集合名.drop():删除集合。

7,  db.collection_name.insert(document):document是一个BSON变量或者直接一个实体数据。

        3.2版本后还有以下插入方式。

            db.collection_name.insertOne();

            db.collection_name.insertMany();

8, update方法:db.collection_name.update(

        <query>,//update的查询条件

        <update>,//update的对象和一些更新操作符($,$inc…)可以理解为set后面的

        {

                 upsert:<boolean>,   //可选,如果update数据不存在,是否插入新数据,true插入,false不插入。

                multi:<booleam>,//可选,默认为false,true的意思是把所有符合条件的记录全部更新。

                writeConcern:<document>//可选,抛出异常的级别。

            }

        )

如果在文档中,不存在更新的域,则会自动创建新的域并保存数据。

Save()方法:db.collection.sava(

           <document>,//文档数据

            {

                     writeConcern:<document>//可选,抛出异常的级别

            }

        )

    3.2版本后还有以下插入方式。

        db.collection_name.updateOne();

        db.collection_name.updateMany();

9, db.collection.remove(

        <query>,//可选,删除条件

        <justOne>//可选,true或者1则只删除一个文档。默认为false

       )

该方法已经过时,现在推荐使用以下方式。

        db.collection.deleteOne();

        db.collection.deleteMany();

10,查询:db.collection.find(query,projection);db.collection.find().pretty();格式化显示数据。

         query:可选,查找指定条件的数据

         projection:制定返回的字段名称,_id默认返回,如果不需要返回需要制定_id:0,其他的键在需要返回的时候,需要制定为1.eg:”name”:1|name:1

查询条件:

操作

格式

范例

Sql

等于

{<key>:<value>}

db.col.find({“name”:”jym”}).pretty()

Where name = “jym”

小于

{<key>:{$lt:<value>}}

db.col.find({“age”:{$lt:50}}).pretty()

Where age < 50

小于或等于

{<key>:{$lte:<value>}}

db.col.find({“age”:{$lte:50}}).pretty()

Where age <= 50

大于

{<key>:{$gt:<value>}}

db.col.find({“age”:{$gt:50}}).pretty()

Where age < 50

大于或等于

{<key>:{$gte:<value>}}

db.col.find({“age”:{$gte:50}}).pretty()

Where age <= 50

不等于

{<key>:{$ne:<value>}}

db.col.find({“age”:{$ne:50}}).pretty()

逻辑运算:

(1)and:MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。Eg:db.col.find({key:value,key2:value2}).pretty()

(2)or:db.col.find(

     $or:[

         {key1:value1},{key2:value2}

]

).pretty();

(3)or和and联合使用

Eg:where ages > 50 and (name = “jym”or name = “ww”)

db.col.find({“ages”:{$gt:50},$or:[{“name”:”jym”},{“name”:”ww”}]})

11,$type操作符:基于BSON类型来检索集合中匹配的数据类型,并返回结果。

Eg:获取title为String类型的数据,也就是上表的type=2对应的String类型。

db.col.find({“title”:{$type:2}}).pretty();

12,limit()和skip()方法。

    (1)    limit():接受一个数字参数,该参数从指定的数据库读取的记录的条数。

        Eg:db.col.find().limit(2).pretty();从查找的数据中读取前两条数据。

    (2)    skip():接受一个数字参数,该参数指定跳过的记录数。

13,排序:sort()通过参数指定排序的字段,并使用1和-1来指定排序的方式。1为升序-1位降序。db.col.find().sort({key:1|-1});

14,索引:mongodb使用createIndex()方法来创建索引。

        Db.col.createIndex(key,options);//key为索引的字段,1位升序创建索引。-1为降序创建索引。

        在创建索引的时候,可以设置多个索引字段。

        db.col.createIndex({key:1,key2:-1},[可选参数]);

具体的参数如下表:

15,聚合:主要用于处理数据(例如求平均值,求和等。)类似sql中的average()和count(*).

        Mongodb中的聚合方式使用aggregate().

        db.col.aggregate(AGGREGATE_OPERATION)

        AGGREGATE_OPERATION的具体参数如下:

 

    Eg:select by_user, count(*)from mycol group by by_user

    db.mycol.aggregate([{$group: {_id : "$by_user", num_tutorial : {$sum : 1}}}])



猜你喜欢

转载自blog.csdn.net/swimming_in_IT_/article/details/80720525