mongodb搭建和基本语法
下载安装包
安装及基本语法
http://jingyan.baidu.com/article/ed15cb1b52b8661be2698162.html
基本语法
插入:
for(i=3;i<100;i++) db.table.insert({x:i})
查询:
db.table.find().skip(3).limit(2).sort({x:1}) // 跳过前三条,查询两条数据,并按x的正序排序
db.table,find().count() // 查询数据数量
db.table.find({m:{$exists:true}}) // 查询存在m字段的数据,true存在,false不存在
db.table.find({m:{$exists:true}}).hint("index_name") // 查询时强制使用索引
更新:
db.table.update({x:1},{x:999},true,true) // 第三个参数表示如果更新的数据不存在,则插入一条数据;更新时默认更新符合条件的第一条数据,第四个参数为true,则更新所有符合条件的数据
db.table.update({z:100},{$set:{y:100}}) // 更新部分数据
删除:
db.table.remove({x:1}) // 默认删除所有符合条件的数据
db.table.remove({}); // 删除集合中的所有数据
db.table.drop() // 删除表中所有的数据,并把表删除
db.dropDatabase() // 删除数据库
索引:
db.table.ensureIndex({x:1}) // 创建单键索引
db.table.ensureIndex({x:1,y:-1}) // 创建复合索引,1和-1表示排序
db.table.ensureIndex({x:1},{expireAfterSeconds:30}) // 创建过期索引,一段时间后插入的数据自动删除,expireAfterSeconds单位是秒
过期索引的限制:
1、存储在过期索引字段的值必须是指定的时间类型,ISODate或者ISODate数组,不能用时间戳(new Date())
2、如果指定了ISODate数组,则按照最小的时间进行删除
3、过期索引不能是复合索引
4、删除时间不是精确的,删除过程是有后台程序每60s跑一次,而且上次也是需要一些时间
db.table.getIndexes() // 查询索引
db.table.dropIndex("index_name") // 删除索引,index_name是索引的名字
db.table.ensureIndex({x:1},{name:"index_name"}) // 自定义索引的名字,如果没有第二个参数,mongo会给索引一个默认名字
db.table.ensureIndex({x:1},{unique:true}) // 唯一索引,唯一性
db.table.ensureIndex({x:1},{sparse:true}) // 稀疏索引,稀疏性,不必为不存在x字段的数据创建索引,如果强制使用索引查找不存在x的数据,则查不到数据
全文索引
db.table.ensureIndex({key1:"text",key2:"text"}) // 创建全文索引,value为text
db.table.ensureIndex({"$**":"text"}) // 表示对集合中所有字段,创建全文索引
db.table.find({$text:{$search:"coffee"}}) // 查找全文索引
db.table.find({$test:{$search:"aa bb cc"}}) // 查找多个关键词,用空格分开,“或”查询,含有其中一个
db.table.find({$test:{$search:"\"aa\" \"bb\" \"cc\""}}) // 查找多个关键词,“与“查询,都包含,用引号把关键词包裹起来
db.table.find({$test:{$search:"aa bb -cc"}}) // 查找多个关键词,但不包含cc
db.table.find({$test:{$search:"aa bb"}}, {score:{$meta:"textScore"}}).sort({score:{$meta:"textScore"}}) // 查找相似度并排序,得分越高,越相似
全文索引的限制:
1、每次查询,只能指定一个$text查询
2、$text查询不能出现在$nor查询中
3、查询中如果包含了$text,hint不再起作用
4、mongoDB全文索引还不支持中文
地址位置索引:
2D索引:平面地址位置索引
db.table.ensureIndex({w:"2d"}) // 值是2d
db.table.insert({w:[经度,纬度]})
db.table.find({w:{$near:[1,1],$maxDistance:10}}) // 10个点范围内,查询距离某个点最近的点
db.table.find({w:{$geowithin:{$box:[[0,0],[3,3]]}}}) // 查询某个形状内的点
1、$body:矩形
{$body:[[x1,y1],[x2,y2]]} // 左边界和右边界
2、$center:圆形
{$center:[[x1,y1],r]} // 圆心位置和半径
3、$polygon:多边形
{$polygon:[[x1,y1],[x2,y2],[x3,y3],……]}
2Dsphere索引:球面地理位置索引
db.table.ensureIndex({w:"2dsphere"})
GeoJSON:描述一个点,一条直线,多边形等形状
格式:{type:"",coordinates:[<coordinates>]}
geoNear查询:
db.runCommand({geoNear:<collection>,near:[x,y],minDistance:(对2d索引无效),maxDistance:10,num:2(查询个数)})
备份策略
命令行备份:mongodump/mongorestore mongodump将mongodb的数据导出至BSON文件,mongorestore将BSON文件的数据导入到mongodb中
文件系统备份
Backup服务
MongoDB中条件操作符有:
- (>) 大于 - $gt
- (<) 小于 - $lt
- (>=) 大于等于 - $gte
- (<= ) 小于等于 - $lte
db.table.find({age : {$lt :24, $gt : 17}})
mongodb搭建和基本语法的更多相关文章
- express + mongodb 搭建一个简易网站(二)
express + mongodb 搭建一个简易网站 (二) 在搭建网站(一)中,实现了简单的路由功能,这离一个完整的网站还差的有点远,继续撸代码吧. 1.首先在根目录下新建一个views文件夹,用来 ...
- 用“MEAN”技术栈开发web应用(三)用mongodb搭建数据库
上一篇介绍了如何用express搭建起服务端MVC的开发架构,本篇我们来详细介绍一下这个Model层,也就是数据库访问层.包含如何使用mongodb搭建数据库,以及如何使用mongoose来访问数据. ...
- Python中使用Flask、MongoDB搭建简易图片服务器
主要介绍了Python中使用Flask.MongoDB搭建简易图片服务器,本文是一个详细完整的教程,需要的朋友可以参考下 1.前期准备 通过 pip 或 easy_install 安装了 pymong ...
- mongodb命令行基础语法
首先是安装并配置mongodb,这个请自行百度,安装完成后打开cmd命令输入mongo.我们现在先做一个例子吧,假设有一个班级叫c1,里面有若干个人,里面的人有姓名.年龄.性别和班级,我们分别对他们进 ...
- 用Node.JS+MongoDB搭建个人博客(页面模板)(五)(结束)
<差不多先生> 我是差不多先生,我的差不多是天生.也代表我很天真,也代表我是个闲人.这差不多的人生,总是见缝插针. 求学的道路上总是孤独的,即使别人不理解我,认为我是奇葩!但没关系,我会坚 ...
- 从无到有,用Nodejs+express+mongodb搭建简易登陆系统
前端处理server表示很蛋疼,初学Node,虽然感觉异常强大,但是学起来还是有些吃力的,Node是工具,它不是万能的,搭建一个系统还是需要借助其他一些工具,对于我这个没怎么接触server的前端来说 ...
- express + mongodb 搭建一个简易网站 (四)
express + mongodb 搭建一个简易网站 (四) 目前网站整体页面都已经能全部展示了,但是,整个网站还有两个块需要做完才能算完整,一个连接数据库,目前网站上的数据都是抓取的本地假数据,所以 ...
- express + mongodb 搭建一个简易网站 (三)
express + mongodb 搭建一个简易网站 (三) 前面已经实现了基本的网站功能,现在我们就开始开搞一个完整的网站,现在整个网站的UI就是下面的这个样子. 我们网站的样子就照着这个来吧. 1 ...
- express + mongodb 搭建一个简易网站(一)
express + mongodb 搭建一个简易网站(一) 前言:后台使用node.js的express框架,数据库使用mongodb,模板使用ejs.大概就这些. 开始第一个简易网站之旅吧.... ...
随机推荐
- zend studio 13.5破解以及集成xdebug
环境说明: 操作系统:Windows 7 Ultimate Edition Service Pack 1 PHP:7.0.11 TS Zend Studio:13.5.0 Xdebug:2.5.0 一 ...
- PHP两种基础的算法:冒泡、快速排序法》》》望能够帮助到大家
首先扯个淡@@@@@@@@@ 算法是程序的核心,一个程序的好坏关键是这个程序算法的优劣. 冒泡排序法 原理:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的 ...
- 如何在vim里删除空行?
删除空行,进入底行模式 :g/^$/d ^代表首列 $代表尾列 d代表删除 g代表全局替换
- 远程登录VirtualBox虚拟机Linux
通过端口转发的方式,使用终端(如MobaXterm,Xshell,putty等终端)远程登录本机虚拟机Linux, 打开虚拟机,找到 [设置]-->[网络]--> [网卡1] 确认以下设置 ...
- 了解 Spring Data JPA
前言 自 JPA 伴随 Java EE 5 发布以来,受到了各大厂商及开源社区的追捧,各种商用的和开源的 JPA 框架如雨后春笋般出现,为开发者提供了丰富的选择.它一改之前 EJB 2.x 中实体 B ...
- Shell_1 简介
1 Shell 变量 只读变量 使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变. #!/bin/bash -x varName="AAA" echo ...
- wpf 触发器理解
(1)属性触发器:其对应的类是Trigger.它在特定关联属性发生变化时被触发.一个属性的更改会在另一个属性中触发即时或动态更改. (2)数据触发器:其对应的类是DataTrigger.它在特定的CL ...
- 布局包含Image和Title的UIButton
UIButton中的titleEdgeInsets和imageEdgeInsets可以管理button中image和title的布局. 如果对其理解不够深入,用纯数字进行布局管理,经过不断的调试,还是 ...
- Day 2 T1
题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...
- 【BZOJ2442】 [Usaco2011 Open]修剪草坪 斜率优化DP
第一次斜率优化. 大致有两种思路: 1.f[i]表示第i个不选的最优情况(最小损失和)f[i]=f[j]+e[i] 显然n^2会T,但是可以发现f的移动情况可以用之前单调队列优化,就优化成O(n)的了 ...