文档章节

mongodb学习笔记6--杂项与补充

淘醒迷乐
 淘醒迷乐
发布于 2013/06/20 15:39
字数 882
阅读 124
收藏 8
1。适用场景:持久化缓存层,高效的时效性,用于对象和Json数据的存储,高伸缩性的场景,大尺寸,低价值的数据存储。
不适用:高度事务性的场景,复杂多表查询,传统商业智能应用。
2.保持mongodb开机自启动:echo "/usr/local/mongodb/bin/mongod--dbpath=/usr/local/mongodb/data" >>/etc/rc.local
3.杀掉进程 pkill或者kilall
4.数据类型:null:表示空值或者不存在{“name":null}  布尔类型:
{“name":true}  ,32位整数:将被转义位64位浮点数,
64位整数:同上。64位浮点数:默认类型如
{“money":12.02}    字符串类型: {“name":‘各地分公司’}  ,
ObjectId类型:文档唯一的12位id,由时间戳,机器吗  pid  计数器组成。
日期:
{“one":new Date()}    正则:{“name":/ho/i} 采用JS的正则语法
代码:{“name":function(){}}  数组:{“x":["a","b",["c","d"]]} 值可以数组,也可以在数组嵌套数组
5. db.blog.insert和db.blog.save的区别:当插入一条主键相同的数据,insert会报错,不允许插入,而save则会更新也就是覆盖原来的值
6.用JS循环插入数据 举例:
 
 for(i=1;i<=20;i++){
... db.blog.insert({"name":"user"+i,age:i})
... }
输入it显示更多。
7.注意count的用法:如集合有10条数据,db.blog. count()输出10。如果前面加条件,例:db.blog.sort({"age":-1}).skip(2).limit(2).count();按理应该结果是2,但实际是10,因为count忽略了前面的条件,count有两个参数,1代表不忽略0代表忽略,默认是0.
注意sort的位置:放在前面和后面结果是不同的,表示先排序后执行条件还是先执行条件后排序。
8.查询name为user1并且age为1的数据:
db.blog.find({"name":"user1","age":1})
9.or和nor的用法:
查询 
name为user1或者age为1的数据:  db.blog.find({$or:[{"name":"user1"},{"age":10}]})
结果: { "_id" : ObjectId("51c072290adf859a09bec715"), "name" : "user1", "age" : 1 }
> db.blog.find({$or:[{"name":"user1"},{"age":10}]})
{ "_id" : ObjectId("51c072290adf859a09bec715"), "name" : "user1", "age" : 1 }
{ "_id" : ObjectId("51c072290adf859a09bec71e"), "name" : "user10", "age" : 10 }
{ "_id" : ObjectId("51c1b114cf61cd895f843543"), "name" : "user1", "age" : 21 }
查询  name不为user1或者age不为1的数据:  db.blog.find({$nor:[{"name":"user1"},{"age":10}]})
  查询  name不为user1或者name不为user2的数据:  db.blog.find({$nor:[{"name":"user1"},{"name":"user2"}]})
10.distinct过滤重复记录如: db.blog.distinct("name")
11.数组内对象查找 比如查找post里面tit为1的数据: 
 db.ceshi.find({"post.tit":1})
结果: { "_id" : ObjectId("51c1bb601a7338d22dcd6010"), "name" : "user1", "post" : [ { "tit" : 1 }, { "tit" : 2 }, { "tit" : 3 } ] }
另一种方法:$elemMatch,用法如: db.ceshi.find({"post":{$elemMatch:{"tit":1}}})结果如上.
12.游标:
 比如X=db.blog.find()回车将得到数据就集合所有记录
定义变量x:var x=db.blog.find();回车输入x.hasNext()判断是否有下一条记录返回true或者false.如果返回true说明有数据,回车输入x.next()则输出第一条记录,继续回车输入x.next()输出下一条,直到x.haveNext返回false,如果继续x.next()将报错. 
13.Null值查询:比如查询一条age为null的记录,按原先的思路 db.blog.find({"age":null})这样会把不存在age的记录也查出来,显然不对.
那么如何查询呢,有这么几种方法:1, 
db.blog.find({"age":{$exists:1,$in:[null]}})查询age存在的然后筛选出值为null的
2. 
db.blog.find({"age":{$type:10}})查出age值类型为10的记录
14.有如下有一条数据: 
{ "_id" : ObjectId("51c1c8121a7338d22dcd6013"), "name" : "user1", "tiezi" : [ { "title" : "124" }, { "title" : "34543" }, { "title" : "345345" } ] }
如何查出name为user1的前两篇帖子呢可以用$slice方法:  db.ceshi.find({"name":"user1"},{tiezi:{$slice:2}})
后两篇:  db.ceshi.find({"name":"user1"},{tiezi:{$slice:-2}})

© 著作权归作者所有

共有 人打赏支持
淘醒迷乐
粉丝 5
博文 4
码字总数 2506
作品 0
朝阳
程序员
私信 提问
mongodb学习笔记----一

1,mongodb使用MongoDB传输协议作为和服务器交互的主要方式,与之对应的协议http/rest需要更多的开销 2,mongodb区分类型,区分大小写。 3,文档:多个键及其关联的值有序的放在一起便是文档...

drewin
2013/06/06
0
0
MongoDB学习笔记[安装与配置]

笔记是基于Windows下使用MongoDB记下的。 Mongo数据模型 一个Mongo系统(参考上述部署)包含一组数据库一个 database 包含一组collection一个 collection 包含一组document一个 document 是一...

click
2011/09/06
0
0
mongoDB 学习笔记 — Linux下的安装和配置

mongoDB 学习笔记 — Linux下的安装和配置 @(Tools)[MongoDB 安装 配置] 1.源码下载 2. 解压到本地 3. 拷贝至mongoDB目录 4. 加入PATH变量 其中应该使用第三步中的mongodb安装路径代替 以上只...

RubyCat
2014/06/16
0
0
Hadoop 2.5.1学习笔记6:不同数据来源的联结代码范例

下面的程序有个bug,应该是 Path[] cacheFiles = context.getLocalCacheFiles(); if (null != cacheFiles && cacheFiles.length > 0) { readFile(cacheFiles[0].toString(), context); } 代码......

强子哥哥
2014/11/13
0
2
win7安装MongoDB学习笔记

一、安装文件 官方网址:http://www.mongodb.org/downloads,选择对应系统的文件下载。 二、安装过程: 1、解压缩文件,copy文件夹里的bin文件夹并置于C:Program Filesmongodb文件夹下,然后...

DavidBao
2015/03/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Nginx反向代理

Nginx反向代理 应用场景 A 机器运行的nginx提供的web服务,只有一个内网地址192.168.254.128(内网) B机器有两块网卡,一个地址是192.168.254.137(内网),另一个是192.168.79.128(外网)...

李超小牛子
今天
2
0
数据库事务隔离级别

当数据库上有多个事务同时执行的时候,可能出现下面问题: 脏读(dirty read):指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访...

Jacktanger
今天
1
0
4.61 - 第二个JAVA应用 4.62/63 - Tomcat的管理功能

4.61 - 第二个JAVA应用 方法一:配置文件: /usr/local/tomcat/conf/server.xml <Host name="www.aminglinux.cc" appBase="/data/wwwroot/www.aminglinux.cc" unpackWARs="tr......

Champin
今天
0
0
MariaDB密码重置

MariaDB密码重置 如果记得root的密码: mysqladmin -uroot -paminglinux password "aming-linux" //用此方式将原密码aminglinux重置为aming-linux 如果不记得原密码: # vi /etc/my.cnf......

wzb88
昨天
1
0
印度封禁抖音,称导致该国年轻人“文化堕落”!

本文经授权转载自顶级程序员 (ID:TopCoding) 作者 | 江户川雨 责编 | https://weavi.com/13775725 https://weavi.com/13775726 https://weavi.com/13775724 https://weavi.com/13775723 ......

陈刚生
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部