zoukankan      html  css  js  c++  java
  • Mongodb基本操作入门,增删改查和索引

    主要进程

    mongod.exe为启动数据库实例的进程。

    mongo是一个与mongod进程进行交互的JavaScript shell进程,它提供了一些交互的接口函数用户对数据库的管理。

    基本命令

    show  databases;   查询数据库列表

    show  collections;   查询全部的集合   相应关系型数据库的表

    use  test;  数据库切换   切换到test数据库


    mongodb数据库记录成为文档

    插入文档命令

    db.customers.save({name:"张三",age:15,address:'北京东城"});  向集合customer库插入一个文档

    for(var i=1;i<=100;i++) db.customers.save({name:"张三"+i,age:i,telephone:"1861400275"+i});  批量插入100个文档

    查询选择器

    db.customers.find();

    db.customers.find({name:"张三11'});

    db.customers.find({age:{$lt:45}});  keyword  $lt  less than   小于     

    $lte  小于等于  less  than  equals

    $gt   大于    greater  than

    $gte  大于等于  greate  than  equals

    db.customer.find({age:{$lt:45,$gt:35}});

    db.customer.find({age:{$in:[34,35,36]}});   $in  值在范围内   $nin  值不在范围内

    db.customer.find({age:{$ne:50}});   $ne   keyword的值不等于

    db.customer.find({$or:[{age:{$lt:5},{name:"zhangsan"}}]});  $or 或   age小于5或name等于zhangsan   

    db.customer.find({$and:[{age:{$lt:5},{name:"zhangsan"}}]});  $and  且   两个条件同一时候满足

    db.customer.find({id:{$exists:false}});  等价于  db.customer.find({id:null});

    MongoDB表结构是不固定的,有时须要返回包括某个字段的全部记录或不包括的


    查询投射

    查询的结果集返回指定的字段

    db.customer.find({age:{$lt:10}},{_id:0,id:1,name:1});    _id:0  表示不返回_id

    第一个{}内为查询选择器。第二个{}为对前面返回的结果集进行进一步过滤的条件,即投射项。

    db.customer.find().skip(10).limit(5).sort(id:-1);   跳过前十条,取五条,id:-1表示降序排列

    数组操作

    文档的属性为数组 AttributeValue:["收腰型","修身型","直筒型","宽松型"]

    db.DictGoodsAttribute.find({"AtributeValue":"收腰型"}); 仅仅要属性中包括该值,就能返回

    匹配数组中指定位置的元素值

    db.DictGoodsAttribute.find({"AttributeValue.0":"收腰型"});  第一个属性值为"收腰型"


    增该删操作

    添加记录   db.customer.save();

    1.第一次插入数据时,不须要预先创建集合,插入数据时会自己主动创建

    2.插入时会默认创建主键_id,类型为ObjectId类型,这样设计为了更好地支持分布式存储

    3._id插入时复制不能反复


    改动语句                  条件    赋值     

    db.customer.update(query,update,<upsert>,<multi>);

    query为过滤条件    update为赋值  若仅仅包括字段,不包括操作项,则会发生代替性更改

    upsert 可选參数   boolean类型  默觉得false,更新匹配记录,找不到则插入新的文档到集合,插入新记录

    multi    可选參数   boolean类型  默觉得false。更新匹配到的第一个文档,当为true时,更新全部匹配的文档

    db.customer.update({id:5},{$set:{name:"zhangsan"}},{upsert:true},{multi:true});


    删除语句

    db.customer.remove({name:"zhangsan"}); 删除全部 name:zhangsan的文档

    db.customer.remove({name:"zhangsan"},1); 删除第一个匹配文档

    db.customer.remove({}); 删除全部文档。但不删除相应的索引集合,文档对象也会从相应的数据文件里删去


    索引

    和关系型数据库一样,索引的主要作用:提高数据获取的性能

    MongodDB的数据结构也是B+树

    单字段索引

    db.customer.ensuerIndex({name:1},{unique:true});   字段name创建索引,unique 说明是唯一索引

    唯一索引创建成功后,会在对应的数据库系统集合system.indexes添加一条索引记录

    db.system.indexes.find() 查看全部索引  

    db.customer.find({name:"zhangsan"}).explain();能够使用explain()查询分析函数查看添加索引后查询比較

    符合索引

    db.customer.find({name:1,age:1}); 在两个字段上进行索引

    未使用索引,选择器 explain函数解析结果 


    在字段name上加入索引。explain解析结果


    对一个值为数组类型的字段创建索引。默认对数组中的每个元素创建索引

    AttributeValue:["0-99","100-299","300-499"] 此时创建的索引为全部元素索引

    元素为嵌套文档 statusInfo:[{status:9,desc:"已取消"},{status:10,desc:"已发货"}]

    为单个字段创建索引   ensureIndex({"statusInfo.desc":1});


    索引的删除

    db.customer.dropIndex("_name");  參数为索引名









  • 相关阅读:
    Android UI组件之自定义控件实现IP地址控件
    封装一个类搞定90%安卓客户端与服务器端交互
    深入理解 RecyclerView 系列之:ItemDecoration
    Android开发技巧——设置系统状态栏颜色
    Activity,Fragment的状态保存
    Activity生命周期函数、onSaveInstanceState()和onRestoreInstanceState()的介绍
    Android Fragment生命周期
    恢复云数据库MySQL的备份文件到自建数据库遇到的报错
    如何在宿主机上查看kvm虚拟机的IP
    批量分发公钥脚本
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7249486.html
Copyright © 2011-2022 走看看