主要进程

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. hdu 5104(数学)

    Primes Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  2. POJ 3041.Asteroids-Hungary(匈牙利算法)

    Asteroids Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 23963   Accepted: 12989 Descr ...

  3. Codeforces Gym100952 C. Palindrome Again !!-回文字符串 (2015 HIAST Collegiate Programming Contest)

      C. Palindrome Again !!   time limit per test 1 second memory limit per test 64 megabytes input sta ...

  4. python获取小程序手机号并绑定

    最近在做小程序开发,在其中也遇到了很多的坑,获取小程序的手机号并绑定就遇到了一个很傻的坑. 流程介绍 官方流程图 小程序使用方法 需要将 <button> 组件 open-type 的值设 ...

  5. [Usaco2010 Feb]Chocolate Buying

    题目描述     贝西和其他奶牛们都喜欢巧克力,所以约翰准备买一些送给她们.奶牛巧克力专卖店里 有N种巧克力,每种巧克力的数量都是无限多的.每头奶牛只喜欢一种巧克力,调查显示, 有Ci头奶牛喜欢第i种 ...

  6. luogu P1395 会议

    题目描述 有一个村庄居住着n个村民,有n-1条路径使得这n个村民的家联通,每条路径的长度都为1.现在村长希望在某个村民家中召开一场会议,村长希望所有村民到会议地点的距离之和最小,那么村长应该要把会议地 ...

  7. 搭建基于asp.net的wcf服务,ios客户端调用的实现记录

    一.写wcf 问题: 1.特定的格式 2.数据绑定 3.加密解密 二.发布到iis 问题: 1.访问权限问题,添加everyone权限 访问网站时:http://localhost/WebbUploa ...

  8. App Distribution Guide (二)

    Configuring Your Xcode Project for Distribution  You can edit your project settings anytime, but som ...

  9. Persisting iOS Application Data in SQLite Database Using FMDB

    In previous articles we have utilized NSUserDefaults and .NET web services to persist iPhone data. N ...

  10. ES6里关于正则表达式的拓展

    一.构造函数 在 ES5 中,RegExp构造函数的参数有两种情况. 第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag) var regex = new RegExp('xy ...