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"); 參数为索引名
Mongodb基本操作入门,增删改查和索引的更多相关文章
- 利用koa实现mongodb数据库的增删改查
概述 使用koa免不了要操纵数据库,现阶段流行的数据库是mongoDB,所以我研究了一下koa里面mongoDB数据库的增删改查,记录下来,供以后开发时参考,相信对其他人也有用. 源代码请看:我的gi ...
- mysql 的基本操作总结--增删改查
本文只是总结一下mysql 的基本操作,增删改查,以便忘记的时候可以查询一下 1.创建数据库 语法:CREATE DATABASES 数据库名; 例子: CREATE DATABASES studen ...
- Batis-iBatis基本操作(增删改查)
Batis-iBatis基本操作(增删改查) 时间 2014-04-10 17:55:20 CSDN博客 原文 http://blog.csdn.net/mazhaojuan/article/de ...
- MongoDB的基本操作(增删改查)
目录 概念整理 数据库:一个MongoDB中可以建立多个数据库. 集合:MongoDB的文档组. 文档:实际存放数据的地方. 常见的操作 数据库(新增,删除) 集合(新增,编辑,删除) 文档(增删 ...
- webpack4+express+mongodb+vue 实现增删改查
在讲解之前,我们先来看看效果如下所示: 1)整个页面的效果如下: 2) 新增数据效果如下: 3) 新增成功如下: 4) 编辑数据效果如下: 5) 编辑成功效果如下: 6) 删除数据效果如下: 7) 删 ...
- nodejs对mongodb数据库的增删改查操作(转载)
首先要确保mongodb的正确安装,安装参照:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian-or-ubuntu-l ...
- 69.nodejs对mongodb数据库的增删改查操作
转自:https://www.cnblogs.com/sexintercourse/p/6485381.html 首先要确保mongodb的正确安装,安装参照:http://docs.mongodb. ...
- python连接集群mongodb,封装增删改查
1.下载pymongo pip install pymongo 2.直接上代码 [ini配置文件] 封装读ini省略~~ [db.py] class Database(): def __init__( ...
- MongoDB学习之--增删改查(1)
本文是对mongodb学习的一点笔记,主要介绍最简单的增删改操作,初学,看着API,有什么错误,希望大家指正:(使用官方驱动) 1.增 增加操作是最简单的,构造bsonDcument插入即可: 方式1 ...
随机推荐
- 实现如下语法的功能:var a = (5).plus(3).minus(6); //2
从汤姆大叔的博客里看到了6个基础题目:本篇是第5题 - 实现如下语法的功能:var a = (5).plus(3).minus(6); //2 解题关键: 1.理解使用(5)和5的区别 2.构造函数原 ...
- 51nod 1086 背包问题 V2 【二进制/多重背包】
1086 背包问题 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 有N种物品,每种物品的数量为C1,C2......Cn.从中任选若干件放 ...
- poj2104(划分树模板)
poj2104 题意 给出一个序列,每次查询一个区间,要求告诉这个区间排序后的第k个数. 分析 划分树模板,O(mlogn). 建树.根据排序之后的数组,对于一个区间,找到中点的数,将整个区间分为左右 ...
- C++中数据对齐问题。struct、union、enum,类继承。再谈sizeof()
首先是struct,在C++中,结构体其实和class有很大的相似了.但是有一点不同的是,struct默认是public,而class中是private. 当然,struct继承等用法也是可以的. 共 ...
- DML数据操纵语言
--创建表T_HQ_BM2 --create table t_hq_bm2 as select * from t_hq_bm; commit; --添加行内容 --insert into t_hq_b ...
- linux 自动删除n天前文件
现在系统每天生成一个日期文件夹,并压缩上传到ftp服务器,造成目录下文件太多,所以决定写个定时删除文件的任务 写脚本文件 find /home/data -mtime +90 -name " ...
- steelray project viewer
steelray project viewer是一款英文语言软件,透过Steelray Project Viewer,可以打开.导航.浏览.打印Microsoft Project的.mpp文件.
- 搭建基于asp.net的wcf服务,ios客户端调用的实现记录
一.写wcf 问题: 1.特定的格式 2.数据绑定 3.加密解密 二.发布到iis 问题: 1.访问权限问题,添加everyone权限 访问网站时:http://localhost/WebbUploa ...
- sqlserver 下载地址(SQL Server 2008 R2 中英文 开发版/企业版/标准版 下载)
转自:http://blog.sina.com.cn/s/blog_624b1f950100pioh.html 注:企业版无法安装在xp和win7,开发版才可以! 一. 简体中文 1. SQL S ...
- SQL SERVER 补丁查看
SELECT @@VERSION as 版本情况 SELECT SERVERPROPERTY('ProductVersion') as 产品版本编号, SERVERPROPERTY('Produc ...