mongodb中基本操作

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


命令:
数据库操作
集合操作
文档操作


数据库操作

1, show dbs;
2, db:显示当前数据库对象或者集合。
3, use [数据库]:连接到指定数据库。如果不存在自动创建数据库。
4, db.dropDatabase():删除当前数据库。
5,mongo 远程主机ip或DNS:MongoDB端口号/数据库名 -u user -p password:连接数据库


集合操作

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

  • capped:布尔-(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。当该值为 true 时,必须指定 size 参数。
  • AutoIndexld:布尔-(可选)如为 true,自动在 _id 字段创建索引。默认为 false。
  • size:数值-(可选)为固定集合指定一个最大值(以字节计)。如果 capped 为 true,也需要指定该字段
  • max:数值–(可选)指定固定集合中包含文档的最大数量。

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


文档操作

1, db.collection_name.insert(document): document是一个BSON变量或者直接一个实体数据。
       3.2版本后还有以下插入方式。

  • db.collection_name.insertOne();
  • db.collection_name.insertMany();
    2, update方法: 用来更新文档。
db.collection_name.update(
        <query>,//update的查询条件
        <update>,//update的对象和一些更新操作符($,$inc…)可以理解为set后面的
        {
                upsert:<boolean>,   //可选,如果update数据不存在,是否插入新数据,true插入,false不插入。
                multi:<booleam>,//可选,默认为falsetrue的意思是把所有符合条件的记录全部更新。
                writeConcern:<document>//可选,抛出异常的级别。
        })

  如果在文档中,不存在更新的域,则会自动创建新的域并保存数据。
3,save()方法: 通过传入的文档来替换已有文档。

db.collection.sava(
 <document>,//文档数据
  {
           writeConcern:<document>//可选,抛出异常的级别
  })
 3.2版本后还有以下插入方式。
     db.collection_name.updateOne();
     db.collection_name.updateMany();
 eg:
 db.col.save({
    "_id" : ObjectId("56064f89ade2f21f36b03136"),
    "title" : "MongoDB",
    "description" : "MongoDB 是一个 Nosql 数据库",
    "by" : "Runoob",
    "url" : "http://www.runoob.com",
    "tags" : [
            "mongodb",
            "NoSQL"
    ],
    "likes" : 110
})

4,文档删除:

db.collection.remove(
     <query>,//可选,删除条件
     <justOne>//可选,true或者1则只删除一个文档。默认为false
)
该方法已经过时,现在推荐使用以下方式。
        db.collection.deleteOne();
        db.collection.deleteMany();

5,文档查询: db.collection.find(query,projection);db.collection.find().pretty();格式化显示数据。
query:可选,查找指定条件的数据
projection:制定返回的字段名称,_id默认返回,如果不需要返回需要制定_id:0,其他的键在需要返回的时候,需要制定为1.eg:”name”:1|name:1
查询条件:
操作 格式 范例 Sql
这里写图片描述
逻辑运算:
(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”}]})

6,$type操作符:基于BSON类型来检索集合中匹配的数据类型,并返回结果。
这里写图片描述

Eg:获取title为String类型的数据,也就是上表的type=2对应的String类型。
db.col.find({“title”:{$type:2}}).pretty();

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

Eg:db.col.find().limit(2).pretty();从查找的数据中读取前两条数据。
(2)    skip():接受一个数字参数,该参数指定跳过的记录数。
Eg:db.col.find().skip(2).pretty();从查找的数据中跳过前两条数据。

8,排序: sort()通过参数指定排序的字段,并使用1和-1来指定排序的方式。1为升序-1位降序。

db.col.find().sort({key:1|-1});

9,索引: 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}}}])**
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值