Mongodb 的基本使用
一、cmd连接mongodb 服务
进入mongodb的bin目录下:[D:\mongodb3.2.5\bin]$ mongo 127.0.0.1:27017
常用查询:
show dbs 查看所有数据库
use dbName 进入当前数据库
show tables 查看该数据库下的集合
二、curd操作
查询:
1.查全部:db.mydb2_collection.find();
2.查询一条:db.mydb2_collection.findOne();
插入:db.mydb2_collection.insert({m:1});
修改:db.mydb_collection.update({x:1},{x:999});
删除:db.mydb_collection.remove({c:2});
三、索引
优点:可以加快与所有相关的查询速度
缺点:增加磁盘空间,降低写入性能
索引类型:
id索引:自动创建的
单键索引:
多键索引:db.mydb2_collection.insert({x:[1,2,3,4,5]});
复合索引:当我们的查询条件不知一个的时候,就需要建立复合索引
db.mydb2_collection.ensureIndex({x:1,y:1}); 创建
db.mydb2_collection.find({x:1,y:2}); 使用
过期索引:1.在一段时间后会过期的索引 2、在索引过期后相应的数据会被删除
使用场景:适合存储在一些时间后会失效的数据比如用户登录信息,存储的日志
创建方式:
注意:存储在过期索引的字段必须是指定时间类型,必须是ISODate或者ISODate数组,不能使用时间戳,否则不能自动删除。
如果是数组,则按照最小的时间进行删除
过期索引不是复合索引
删除时间是不精确的(删除过程是后台程序没60秒执行一次的进程操作的,删除操作本身也需要时间) 最小时间差60秒
全文索引:对字符串与字符串数组创建全文可搜索的索引
插入数据:db.mydb2_collection.insert({arrticle:"aa bb cc gg hh"});
查询:db.mydb2_collection.find({$text:{$search:"aa"}});
db.mydb2_collection.find({$text:{$search:"aa bb ee"}}); //多关键字 或者 的关系
db.mydb2_collection.find({$text:{$search:"aa bb -cc"}}); //不包含cc
db.mydb2_collection.find({$text:{$search:"\"aa\"\"bb\"\"cc\""}});//多关键字 且的关系
全文索引相似度:
查询:db.mydb2_collection.find({$text:{$search:"aa bb"}},{score:{$meta:"textScore"}});
db.mydb2_collection.find({$text:{$search:"aa bb"}},{score:{$meta:"textScore"}}).sort({score:{$meta:"textScore"}//排序
索引的属性:
name属性
指定名字创建索引:db.mydb2_collection.ensureIndex({c:1,y:1},{name:"normal_index"});
根据名字删除索引:db.mydb2_collection.dropIndex("normal_index");
unique索引的唯一性:
db.mydb2_collection.ensureIndex({m:1,n:1},{unique:true})
作用:在做添加时如果存在就不插入,否则插入
稀疏性:sparse
创建:db.mydb2_collection.ensureIndex({m:1},{sparse:true});
查询强制使用索引:db.mydb2_collection.find({m:{$exists:false}}).hint("m_1");
地理位置索引:
2d:
创建2d平面索引: db.mydb_location.ensureIndex({w:"2d"});
位置表示方式:经纬度[经度,纬度]
取值范围:经度:[-180,180] 纬度[-90,90]
插入:db.mydb_location.insert({w:[2,1]});
near查询:
查查与[1,1]最近的点:db.mydb_location.find({w:{$near:[1,1]}});
查询与[1,1]相近 10的点:db.mydb_location.find({w:{$near:[1,1],$maxDistance:10}});
形状查询 $geoWithin:
矩形 $box: db.mydb_location.find({w:{$geoWithin:{$box:[[0,0],[2,2]]}}});
圆形$center:db.mydb_location.find({w:{$geoWithin:{$center:[[0,0],2]}}});
多边形$polygon:db.mydb_location.find({w:{$geoWithin:{$polygon:[[0,0],[2,2],[0,2]]}}});
geoNear查询:
db.runCommand({geoNear:"mydb_location",near:[1,2],maxDistance:3,num:1});
2dsphere索引球面地理位置:
四、安全机制
MongoDB安全机制:
1.物理分离(最安全):不现实
2.网络隔离
3.防火墙的隔离:给固定的ip访问权限
4.用户名和密码
创建用户
db.createUser({user:"jalja",pwd:"jalja",roles:[{role:"userAdmin",db:"mydb"},{role:"read",db:"test"}]});
权限:read、readWrite、dbAdmin、dbOwner、userAdmin
在mongo.conf 中添加 auth =true 开启权限认证
使用 用户名密码连接:mongo 127.0.0.1:27017 -u jalja -p jalja
mongodb 的角色
1、数据库角色
2、集群角色
3、数据备份角色
4、其他特殊权限
Mongodb 的基本使用的更多相关文章
- 【翻译】MongoDB指南/聚合——聚合管道
[原文地址]https://docs.mongodb.com/manual/ 聚合 聚合操作处理数据记录并返回计算后的结果.聚合操作将多个文档分组,并能对已分组的数据执行一系列操作而返回单一结果.Mo ...
- 【翻译】MongoDB指南/CRUD操作(四)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...
- 【翻译】MongoDB指南/CRUD操作(三)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...
- 【翻译】MongoDB指南/CRUD操作(二)
[原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...
- 【翻译】MongoDB指南/CRUD操作(一)
[原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(一) 主要内容:CRUD操作简介,插入文档,查询文档. CRUD操作包括创建.读取.更新和删 ...
- CRL快速开发框架系列教程十二(MongoDB支持)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- MongoDB系列(二):C#应用
前言 上一篇文章<MongoDB系列(一):简介及安装>已经介绍了MongoDB以及其在window环境下的安装,这篇文章主要讲讲如何用C#来与MongoDB进行通讯.再次强调一下,我使用 ...
- MongoDB系列(一):简介及安装
什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为应用提供可扩展的高 ...
- [原]分享一下我和MongoDB与Redis那些事
缘起:来自于我在近期一个项目上遇到的问题,在Segmentfault上发表了提问 知识背景: 对不是很熟悉MongoDB和Redis的同学做一下介绍. 1.MongoDB数组查询:MongoDB自带L ...
- 用MongoDB分析合肥餐饮业
看了<从数据角度解析福州美食>后难免心痒,动了要分析合肥餐饮业的念头,因此特地写了Node.js爬虫爬取了合肥的大众点评数据.分析数据库我并没有采用MySQL而是用的MongoDB,是因为 ...
随机推荐
- while语句(1)
<?php for ($i=1; $i<=10 ; $i++) { echo $i."-".($i*10)."<br>&q ...
- JavaScript-在当前显示区范围内实现点不到的小方块
<!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...
- 自定义actionbar标题
这是我自己封装的一个activity,主要作为所有Activity的基类,可以一键关掉所有的activity, 并共享一个自定义actionbar.直接切入主题吧. 第一步就是创建自定义标题的布局文件 ...
- BOOST1.54简化编译
1.设置环境变量 BOOST_ROOT E:\Projects\00.CODE.SDK\boost_1_54_0 2.运行bootstrap.bat 3.运行: bjam install --tool ...
- spring4+hibernate4+maven环境搭建
本文主要介绍利用maven搭建spring4+hibernate4开发环境. 首先我们创建一个maven项目,具体步骤就不详细介绍了,看看我们pom.xml文件 <project xmlns=& ...
- 解决VS2010子目录中的.cpp文件引用上一级目录的stdafx.h找不到定义的问题
Source目录 |-- stdafx.h |--Util目录 |--Util.h |--Util.cpp 现在的发现Util.cpp各种变量的定义全是红色波浪线,找不到定义,但是却能够编译过 问题就 ...
- ARCgis已知线裁剪已知面
经常遇到需要在ArcGIS中,根据已知线图层(要素)切分已知面图层(要素).经过研究,利用topology拓扑菜单中的construct features可以实现.具体如下 现有用线图层A.面图层B, ...
- java代码中获取classpath路径
Javaweb工程中,有时候需要自己手动的去读取classpath下面的配置文件,这里总结一点读取classpath路径的方法,分享一下. 方法一: String path = Test.class. ...
- Jetty源码分析(一)
一.目的 1.了解jetty组成架构: 2.学习jetty启动过程: 3.学习请求访问过程: 4.学习jetty内各模块作用,学习各模块内部代码: 二.jetty版本 本文所学习的jetty版本为:9 ...
- SpringAOP代理报错问题
public class BaseDataSyncPushJob implements StatefulJob{ /*** 日志 */ private static final Log LOG = L ...