主要进程

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");  參数为索引名

最新文章

  1. WEBSTORM 2016.3 activation code激活
  2. MVC授权
  3. mvc 权限设计
  4. [HIHO1079]离散化(线段树、染色)
  5. iOS之富文本
  6. 使用Chrome测试页面响应性
  7. SCVMM更换数据库,如何搞?
  8. 使用SSH代理上IPV6(使用SSH端口转发)
  9. JAVA大整数傻瓜入门
  10. ubuntu10.4的更新源因过期无法更新的解决方法
  11. NSMutable属性声明时为什么不能使用copy
  12. Maven项目构建管理
  13. MySQL .msi 安装失败改用.zip安装步骤
  14. PHP 7.2 新功能介绍
  15. apache tomcat的安装
  16. NEST.net Client
  17. 数据库之MySQL存储过程
  18. C# HttpClient请求Webapi帮助类
  19. 更换mysql数据库的datadir目录
  20. ansible 循环register

热门文章

  1. Git用法速成手册
  2. hdu6053
  3. 洛谷——P1579 哥德巴赫猜想(升级版)
  4. POJ1273 Drainage Ditches (网络流)
  5. 前端html第三方登录
  6. [LOJ6281]数列分块入门 5
  7. SQL Server 2017 EXPRESS 安装 SQLCMD 设置远程连接
  8. iOS8使用TestFlight进行内部测试功能尝鲜
  9. 【微信】1.微信小程序开发--入门
  10. Uri详解之——Uri结构与代码提取