主要进程

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

Mongodb基本操作入门,增删改查和索引的更多相关文章

  1. 利用koa实现mongodb数据库的增删改查

    概述 使用koa免不了要操纵数据库,现阶段流行的数据库是mongoDB,所以我研究了一下koa里面mongoDB数据库的增删改查,记录下来,供以后开发时参考,相信对其他人也有用. 源代码请看:我的gi ...

  2. mysql 的基本操作总结--增删改查

    本文只是总结一下mysql 的基本操作,增删改查,以便忘记的时候可以查询一下 1.创建数据库 语法:CREATE DATABASES 数据库名; 例子: CREATE DATABASES studen ...

  3. Batis-iBatis基本操作(增删改查)

    Batis-iBatis基本操作(增删改查) 时间 2014-04-10 17:55:20  CSDN博客 原文  http://blog.csdn.net/mazhaojuan/article/de ...

  4. MongoDB的基本操作(增删改查)

    ​ 目录 概念整理 数据库:一个MongoDB中可以建立多个数据库. 集合:MongoDB的文档组. 文档:实际存放数据的地方. 常见的操作 数据库(新增,删除) 集合(新增,编辑,删除) 文档(增删 ...

  5. webpack4+express+mongodb+vue 实现增删改查

    在讲解之前,我们先来看看效果如下所示: 1)整个页面的效果如下: 2) 新增数据效果如下: 3) 新增成功如下: 4) 编辑数据效果如下: 5) 编辑成功效果如下: 6) 删除数据效果如下: 7) 删 ...

  6. nodejs对mongodb数据库的增删改查操作(转载)

    首先要确保mongodb的正确安装,安装参照:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian-or-ubuntu-l ...

  7. 69.nodejs对mongodb数据库的增删改查操作

    转自:https://www.cnblogs.com/sexintercourse/p/6485381.html 首先要确保mongodb的正确安装,安装参照:http://docs.mongodb. ...

  8. python连接集群mongodb,封装增删改查

    1.下载pymongo pip install pymongo 2.直接上代码 [ini配置文件] 封装读ini省略~~ [db.py] class Database(): def __init__( ...

  9. MongoDB学习之--增删改查(1)

    本文是对mongodb学习的一点笔记,主要介绍最简单的增删改操作,初学,看着API,有什么错误,希望大家指正:(使用官方驱动) 1.增 增加操作是最简单的,构造bsonDcument插入即可: 方式1 ...

随机推荐

  1. logrotate 学习使用

    logrotate Summary : Rotates, compresses, removes and mails system log files Description : The logrot ...

  2. [BZOJ2095][Poi2010]Bridges 二分+网络流

    2095: [Poi2010]Bridges Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1187  Solved: 408[Submit][Sta ...

  3. easyui常用

    清空列表选中项 //easyui datagrid 清空勾选 $('#List').datagrid('clearSelections'); 扩展修改查询方法 function QueryList() ...

  4. POJ 3264.Balanced Lineup-RMQ(ST)详解

    先写一道水题的博客,为后面要写的博客做一个铺垫. ヾ(◍°∇°◍)ノ゙ RMQ(Range Minimum/Maximum Query),即区间最值查询,对于长度为n的数列A,回答若干询问RMQ(A, ...

  5. HDU 2795.Billboard-完全版线段树(区间求最值的位置、区间染色、贴海报)

    HDU2795.Billboard 这个题的意思就是在一块h*w的板子上贴公告,公告的规格为1*wi ,张贴的时候尽量往上,同一高度尽量靠左,求第n个公告贴的位置所在的行数,如果没有合适的位置贴则输出 ...

  6. 牛客网 牛客练习赛7 B.购物-STL(priority_queue)

    B.购物 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32768K,其他语言65536K64bit IO Format: %lld 题目描述 在遥远的东方,有一家糖果专卖店 这家糖果 ...

  7. Codeforces 628 B.New Skateboard

      B. New Skateboard   time limit per test 1 second memory limit per test 256 megabytes input standar ...

  8. Beginning iOS 8 Programming with Swift-TableView

    UITableView控件使用 使用UITableView,在控件库中,拖拽一个Table View到ViewController中,在Controller的后台代码中需要继承UITableViewD ...

  9. 【bzoj2190】【仪仗队】欧拉函数+线性筛(浅尝ACM-J)

    向大(hei)佬(e)势力学(di)习(tou) Description 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪 ...

  10. Java字符串(String)

    从表面上看,字符串就是双引号之间的数据,例如“微学苑”.“http://www.weixueyuan.net”等.在Java中,可以使用下面的方法定义字符串:    String stringName ...