3.非关系型数据库(Nosql)之mongodb:升降序排序,排序分页,$all,$in,$nin,$or,$nor, $exists,游标,更新(update,$set,$unset,$inc)



1排序sort()

A降序排列

db.c4.find().sort().sort({age:-1});

B升序排列:

db.c4.find().sort({age:-1});

C排序分页

db.collectionName.find().sort({age:-1}).skip(20).limit(10);

 

eg:db.c4.find().sort({age:-1}).skip(20).limit(10);

2 $all,$in,$nin,$or,$nor,$exists

查询集合中的文档,$all主要用来查询数组中的包含关系,查询条件中只要有一个不包含就不返回。

$all(只有都包含才会显示)

> db.c5.insert({name:’zhangsan’,age:[1,2,3,4,5,9,10]});

WriteResult({ “nInserted” : 1 })

> db.c5.insert({name:’lisi’,age:[2,4,7,9,10]});

WriteResult({ “nInserted” : 1 })

> db.c5.insert({name:’wangwu’,age:[4,7,8,16,24]});

WriteResult({ “nInserted” : 1 })

> db.c5.find({age:{$all:[4,7,9]}});

{ “_id” : ObjectId(“543e20c5e2c90313035e7d06”), “name” : “lisi”, “age” : [ 2, 4, 7, 9, 10 ] }

$in(只要有包含1个就显示)

> db.c5.find();

{ “_id” : ObjectId(“543e2098e2c90313035e7d05”), “name” : “zhangsan”, “age” : [ 1, 2, 3, 4, 5, 9, 10

] }

{ “_id” : ObjectId(“543e20c5e2c90313035e7d06”), “name” : “lisi”, “age” : [ 2, 4, 7, 9, 10 ] }

{ “_id” : ObjectId(“543e20ece2c90313035e7d07”), “name” : “wangwu”, “age” : [ 4, 7, 8, 16, 24 ] }

>db.c5.find({age:{$in:[1,2,3]}});

{ “_id” : ObjectId(“543e2098e2c90313035e7d05”), “name” : “zhangsan”, “age” : [ 1, 2, 3, 4, 5, 9, 10

] }

{ “_id” : ObjectId(“543e20c5e2c90313035e7d06”), “name” : “lisi”, “age” : [ 2, 4, 7, 9, 10 ] }

$nin (表示不包含的才显示)

> db.c5.find();

{ “_id” : ObjectId(“543e2098e2c90313035e7d05”), “name” : “zhangsan”, “age” : [ 1, 2, 3, 4, 5, 9, 10

] }

{ “_id” : ObjectId(“543e20c5e2c90313035e7d06”), “name” : “lisi”, “age” : [ 2, 4, 7, 9, 10 ] }

{ “_id” : ObjectId(“543e20ece2c90313035e7d07”), “name” : “wangwu”, “age” : [ 4, 7, 8, 16, 24 ] }

>db.c5.find({age:{$nin:[1,2,3]}});

{ “_id” : ObjectId(“543e20ece2c90313035e7d07”), “name” : “wangwu”, “age” : [ 4, 7, 8, 16, 24 ] }

$or (相当于或)

> db.c6.find({$or:[{name:”zhangsan”},{age:25}]})

{ “_id” : ObjectId(“543e2409e2c90313035e7d08”), “name” : “zhangsan”, “age” : 24 }

{ “_id” : ObjectId(“543e2432e2c90313035e7d09”), “name” : “lisi”, “age” : 25 }

{ “_id” : ObjectId(“543e2451e2c90313035e7d0a”), “name” : “wangwu”, “age” : 25 }

$nor

查询集合中的文档,$nor,表示根据条件过滤掉某些数据,例如:查询name不是user2,age不是3的文档,命令为:

db.collectionName.find({$nor:[{name:”user1”},{age:3}]});

> db.c6.find();

{ “_id” : ObjectId(“543e2409e2c90313035e7d08”), “name” : “zhangsan”, “age” : 24 }

{ “_id” : ObjectId(“543e2432e2c90313035e7d09”), “name” : “lisi”, “age” : 25 }

{ “_id” : ObjectId(“543e2451e2c90313035e7d0a”), “name” : “wangwu”, “age” : 25 }

> db.c6.find({$or:[{name:”zhangsan”},{age:25}]})

{ “_id” : ObjectId(“543e2409e2c90313035e7d08”), “name” : “zhangsan”, “age” : 24 }

{ “_id” : ObjectId(“543e2432e2c90313035e7d09”), “name” : “lisi”, “age” : 25 }

{ “_id” : ObjectId(“543e2451e2c90313035e7d0a”), “name” : “wangwu”, “age” : 25 }

> db.c6.find({$nor:[{name:”zhangsan”},{age:25}]})

$exists

查询集合中的文档,$exists,用于查询集合中存在某个键的文档或不存在某个键的文档,例如查询customer集合中存在name键的所有文档,可以使用db.collectionName.find({name:{$exists:1}});

$exists:1表示真,指存在

$exists:0表示假,指不存在

分别查询包含name属性的和包含sex属性的数据

3游标

游标(相当于数据库的一个临时的存储区,它是存放在内存中的,查找某个集合返回记录,我可以把这些记录放在游标当中,然后我可以迭代游标)。

查询集合中的文档,类似关系型数据库,mongodb中也有游标的概念

4更新

> show dbs;

admin (empty)

local 0.078GB

test  0.078GB

> use toto

switched to db toto

> db

toto

> use test

switched to db test

> use toto

switched to db toto

> db

Toto

> db.c1.insert({name:"zhangsan",age:19});

WriteResult({ "nInserted" : 1 })

> db.c1.insert({name:"lis",age:25});

WriteResult({ "nInserted" : 1 })

> db.c1.insert({name:"wangwu",age:23});

WriteResult({ "nInserted" : 1 })

> db.c1.insert({name:"zhaoliu",age:27});

WriteResult({ "nInserted" : 1 })

> db.c1.insert({name:"tianqi",age:33});

WriteResult({ "nInserted" : 1 })

> db.c1.find();

{ "_id" : ObjectId("543e3223e2c90313035e7d0e"), "name" : "zhangsan", "age" : 19 }

{ "_id" : ObjectId("543e3244e2c90313035e7d0f"), "name" : "lis", "age" : 25 }

{ "_id" : ObjectId("543e3259e2c90313035e7d10"), "name" : "wangwu", "age" : 23 }

{ "_id" : ObjectId("543e3270e2c90313035e7d11"), "name" : "zhaoliu", "age" : 27 }

{ "_id" : ObjectId("543e3294e2c90313035e7d12"), "name" : "tianqi", "age" : 33 }

更新操作:

db.collectionName.update({条件},{修改的值}),函数中4个参数的介绍

1. 设置更新的条件

2. 设置更新的内容的对象

3. 如果没有符合条件的记录,是否新增一条记录(取值为0/1)

4. 如果有多条记录符合,是否全部更新(取值0/1)

db.collectionName.update({条件},{修改的值})

1. 更新的时候只更新到一条,且其它的key:value覆盖掉了

2. 我只更新到一条

> db.c1.find();

{ "_id" : ObjectId("543e3244e2c90313035e7d0f"), "age" : 36 }

{ "_id" : ObjectId("543e3259e2c90313035e7d10"), "name" : "wangwu", "age" : 23 }

{ "_id" : ObjectId("543e3270e2c90313035e7d11"), "name" : "zhaoliu", "age" : 27 }

{ "_id" : ObjectId("543e3294e2c90313035e7d12"), "name" : "tianqi", "age" : 33 }

> db.c1.update({age:36},{$set:{name:"zhangsan"}},0,1);

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.c1.find();

{ "_id" : ObjectId("543e3244e2c90313035e7d0f"), "age" : 36, "name" : "zhangsan" }

{ "_id" : ObjectId("543e3259e2c90313035e7d10"), "name" : "wangwu", "age" : 23 }

{ "_id" : ObjectId("543e3270e2c90313035e7d11"), "name" : "zhaoliu", "age" : 27 }

{ "_id" : ObjectId("543e3294e2c90313035e7d12"), "name" : "tianqi", "age" : 33 }

 

> db.c1.find();

{ "_id" : ObjectId("543e3244e2c90313035e7d0f"), "age" : 36, "name" : "zhangsan" }

{ "_id" : ObjectId("543e3259e2c90313035e7d10"), "name" : "wangwu", "age" : 23 }

{ "_id" : ObjectId("543e3270e2c90313035e7d11"), "name" : "zhaoliu", "age" : 27 }

{ "_id" : ObjectId("543e3294e2c90313035e7d12"), "name" : "tianqi", "age" : 33 }

> db.c1.update({age:24},{$set:{name:"tuzuoquan",age:24}},1,0);

WriteResult({

       "nMatched" : 0,

       "nUpserted" : 1,

       "nModified" : 0,

       "_id" : ObjectId("543e3644dd76b7dcaba68faf")

})

> db.c1.find();

{ "_id" : ObjectId("543e3244e2c90313035e7d0f"), "age" : 36, "name" : "zhangsan" }

{ "_id" : ObjectId("543e3259e2c90313035e7d10"), "name" : "wangwu", "age" : 23 }

{ "_id" : ObjectId("543e3270e2c90313035e7d11"), "name" : "zhaoliu", "age" : 27 }

{ "_id" : ObjectId("543e3294e2c90313035e7d12"), "name" : "tianqi", "age" : 33 }

{ "_id" : ObjectId("543e3644dd76b7dcaba68faf"), "age" : 24, "name" : "tuzuoquan" }

5 inc

更新集合中的文档,使用$inc将集合中name为user1的age加1,其它键不变,$inc表示使某个键值加减指定的数值。

> for(var i=1;i<=20;i++){ db.c2.insert({name:"tuzuoquan",age:24}); }

WriteResult({ "nInserted" : 1 })

> db.c2.find();

{ "_id" : ObjectId("543e386ee2c90313035e7d13"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e386ee2c90313035e7d14"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d15"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d16"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d17"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d18"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d19"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1a"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1b"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1c"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1d"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1e"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1f"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d20"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d21"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d22"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d23"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d24"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d25"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d26"), "name" : "tuzuoquan", "age" : 24 }

db.c2.update({name:"tuzuoquan"},{$inc:{age:1}},0,1);

6 $unset(删除某个键)

更新集合中的文档,$unset用来删除某个键,例如删除name为user1的文档中address键,可以使用命令:

db.c1.update({name:”user”},{$unset:{age:1}},0,1);

>db.c2.update({name:"tuzuoquan"},{$unset:{age:1}},0,1);

WriteResult({ "nMatched" : 20, "nUpserted" : 0, "nModified" : 20 })

> db.c2.find();

{ "_id" : ObjectId("543e386ee2c90313035e7d13"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e386ee2c90313035e7d14"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d15"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d16"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d17"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d18"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d19"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1a"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1b"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1c"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1d"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1e"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1f"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d20"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d21"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d22"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d23"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d24"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d25"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d26"), "name" : "tuzuoquan" }

 

时间: 2024-12-11 10:11:30

3.非关系型数据库(Nosql)之mongodb:升降序排序,排序分页,$all,$in,$nin,$or,$nor, $exists,游标,更新(update,$set,$unset,$inc)的相关文章

经验之谈:非关系型数据库(NoSql)

最近了解了一点非关系型数据库,觉得这是一个很好的方向,对于大数据方面的处理,非关系型数据库能起到至关重要的地位.这里我主要是整理了一些前辈的经验,仅供参考. 关系型数据库的特点 1.关系型数据库 关系型数据库,是指采用了关系模型来组织数据的数据库. 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织.常见 的关系型数据库有Oracle.Mysql.sql server等等. 2.关系型数据库瓶颈 高并发读写需求 网站的用户并发性非常高,往往达

【独家】一文读懂非关系型数据库(NoSQL)

前言 NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL". 现代计算系统每天在网络上都会产生庞大的数据量.这些数据有很大一部分是由关系型数据库管理系统(RDBMSs)来处理,其严谨成熟的数学理论基础使得数据建模和应用程序编程更加简单. 但随着信息化的浪潮和互联网的兴起,传统的RDBMS在一些业务上开始出现问题.首先,对数据库存储的容量要求越来越高,单机无法满足需求,很多时候需要用集群来解决问题,而RDBMS由于要支持join,union等操作,一般不支持分

关于关系型数据库和非关系型数据库

这篇是转载文章,原文章如下: http://blog.csdn.net/robinjwong/article/details/18502195 1. 关系型数据库 关系型数据库,是指采用了关系模型来组织数据的数据库. 关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为主流数据库结构的主流模型. 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织. 关系模型中常用的概

大数据-怎么统一关系型数据库,非关系型数据库,文件类型以及消息类型(如网页)的接口

问题描述 怎么统一关系型数据库,非关系型数据库,文件类型以及消息类型(如网页)的接口 最近接了个需求,就是要统一如题的各种接口,小弟从来没做过类似的东西.希望各位能给点例子. 解决方案 可以考虑工厂模式和适配器模式

GMT在Apache许可证发布开源非关系型数据库Hibari

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   Gemini Mobile Technologies在Apache许可证下发布了开源非关系型数据库Hibari(在日语中意思为"云雀"). Hibari是为海量数据储存优化的高可靠性和高可用性数据库,可用于云计算应用,如Web电子邮件.社交网络服务,以及其它日常需要储存TB和PB级规 模数据的服务. Hibari是一款高可靠.高可靠的非关系型

5.非关系型数据库(Nosql)之mongodb:创建集合,备份与导入导出, 数据还原,导入导出

 1 固定集合 固定集合值得是事先创建而且大小固定的集合 2 固定集合的特征:固定集合很像环形队列,如果空间不足,最早文档就会被删除,为新的文档腾出空间.一般来说,固定集合适用于任何想要自动淘汰过期属性的场景,没有太多的操作限制. 3 创建固定集合使用命令: db.createCollection("collectionName",{capped:true,size:100000,max:100}); size:指定集合大小,单位为KB,max指定文档的数量 当指定文档数量上限时,

2.非关系型数据库(Nosql)之mongodb:mongodb显示所有数据库,使用数据库,集合创建(显示和隐式创建),集合查询,初步数据的增删改查,分页

 1代开一个cmd窗口,当作mongodb客户端,执行以下命令: mongo localhost:27017 2查看所有的数据库: > show dbs; admin (empty) local 0.078GB 3 db命令,查看当前窗口在那个数据库下面(test数据库没有任何数据,在内存里面): 4创建集合 A 显示创建 db.createCollection("collectionName"); > db.createCollection("c1"

8.非关系型数据库(Nosql)之mongodb的应用场景

 测试脚本: Mysql测试脚本: [php] view plaincopyprint? 1.  <?php   2.  header("Content-Type:text/html;charset=utf-8");   3.  $con = mysql_connect("localhost","root","123456");   4.  if (!$con)   5.    {   6.    die('Coul

1.非关系型数据库(Nosql)之mongodb:mongodb的安装,环境变量配置,数据库服务端启动,客户端启动

 1.MongoDB官方网站上下载MongoDB的安装版本.截图如下: 2 安装64位版本的mongodb.将它解压到: E:\Installed\mongodb-win32-x86_64-2.6.4 bin目录 3将bin的位置配置到环境变量 4启动mongodb数据库,怎么通过客户端连接数据库,跟mongodb进行数据交互 A在电脑下面的随便某个盘下新建一个文件夹,这个目录用来存储数据 F:\mongodbdatafolder B启动一个cmd命令行,输入:mongod --dbpath