MongoDB-比较符及修改器

数学比较符

$lt        小于
$lte       小于等于
$gt        大于
$gte       大于等于
$eq        等于
$ne        不等于

所有数据

> db.stutent.find()                                                     })
{ "_id" : ObjectId("5d2ecd3d14ff51d814e40361"), "name" : "henry", "age" : 16, "sex" : "female", "hobby" : "喝酒" }
{ "_id" : ObjectId("5d2eeb8414ff51d814e40362"), "name" : "henry", "sex" : "female", "hobby" : "喝酒" }
{ "_id" : ObjectId("5d2eeb8414ff51d814e40363"), "name" : "egon", "age" : 18 }
{ "_id" : ObjectId("5d2eec9314ff51d814e40364"), "name" : "alex", "age" : 50 }
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩涡", "age" : 30 }
{ "_id" : ObjectId("5d2eee1314ff51d814e40366"), "name" : "500ml", "age" : 10 }

大于

db.stutent.find({age:{$gt:30}})

# 查询结果
{ "_id" : ObjectId("5d2eec9314ff51d814e40364"), "name" : "alex", "age" : 50 }

大于等于

db.stutent.find({age:{$gte:30}})

# 查询结果
{ "_id" : ObjectId("5d2eec9314ff51d814e40364"), "name" : "alex", "age" : 50 }
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩涡", "age" : 30 }

小于

db.stutent.find({age:{$lt:30}})

# 查询结果
{ "_id" : ObjectId("5d2ecd3d14ff51d814e40361"), "name" : "henry", "age" : 16, "sex" : "female", "hobby" : "喝酒" }
{ "_id" : ObjectId("5d2eeb8414ff51d814e40363"), "name" : "egon", "age" : 18 }
{ "_id" : ObjectId("5d2eee1314ff51d814e40366"), "name" : "500ml", "age" : 10 }

小于等于

db.stutent.find({age:{$lt:30}})

# 查询结果
{ "_id" : ObjectId("5d2ecd3d14ff51d814e40361"), "name" : "henry", "age" : 16, "sex" : "female", "hobby" : "喝酒" }
{ "_id" : ObjectId("5d2eeb8414ff51d814e40363"), "name" : "egon", "age" : 18 }
{ "_id" : ObjectId("5d2eee1314ff51d814e40366"), "name" : "500ml", "age" : 10 }

等于的两种方式

> db.stutent.find({age:{$eq:30}})
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩涡", "age" : 30 }

> db.stutent.find({age:30})
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩涡", "age" : 30 }

不等于

> db.stutent.find({age:{$ne:30}})

{ "_id" : ObjectId("5d2ecd3d14ff51d814e40361"), "name" : "henry", "age" : 16, "sex" : "female", "hobby" : "喝酒" }
{ "_id" : ObjectId("5d2eeb8414ff51d814e40362"), "name" : "henry", "sex" : "female", "hobby" : "喝酒" }
{ "_id" : ObjectId("5d2eeb8414ff51d814e40363"), "name" : "egon", "age" : 18 }
{ "_id" : ObjectId("5d2eec9314ff51d814e40364"), "name" : "alex", "age" : 50 }
{ "_id" : ObjectId("5d2eee1314ff51d814e40366"), "name" : "500ml", "age" : 10 }

修改器

在此前的update中,我们用过$set,对数据进行过更新,其实在update中还存在很多的$关键字,我们把update中的这些关键字叫做 修改器

inc

将查询结果加上某个值后保存,就是原有基础上在增加多少或减少多少

# 给名字为500ml人的年龄加上8
db.stutent.update({name:"500ml"},{$inc:{age:+8}})

# 给名字为500ml人的年龄减去8
db.stutent.update({name:"500ml"},{$inc:{age:-8}})

set

更新属性没有就添加一条

# 将名字为500ml的人名字改成大呲花
db.stutent.update({name:"500ml"},{$set:{name:"大呲花"}})

unset

用来删除Key(field)的

# 删除名字henry中的sex为female的字段
db.stutent.update({name:"henry"},{$unset:{sex:"female"}})

push

针对 Array == list 操作

在Array的最后一个位置中增加数据

$push == append()

# 给小漩涡添加个字段,属性为列表
db.stutent.update({name:"小漩涡"},{$set:{test_list:[1,2,3,4,5]}})

{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩涡", "age" : 30, "test_list" : [ 1, 2, 3, 4, 5 ] }

# 可以为所有满足条件的 Document 添加 "test_list"
db.stutent.update({},{$set:{test_list:[1,2,3,4,5]}})
# 注意我这里的条件为空 " {} " 就算是为空,也要写上"{}" 记住记住记住

# --------------------------------------------------------------------------
# 用push给test_list中追加元素
db.stutent.update({name:"小漩涡"},{$push:{test_list:1000}})

{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩涡", "age" : 30, "test_list" : [ 1, 2, 3, 4, 5, 1000 ] }

pushAll

$pushAll == extend()

迭代追加

> db.stutent.find({name:"小漩涡"})
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩涡", "age" : 30, "hobby" : [ "喝酒", "烫头" ] }

> db.stutent.update({name:"小漩涡"},{$pushAll:{hobby:[1,2,3,4,5]}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.stutent.find({name:"小漩涡"})                              }})
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩涡", "age" : 30, "hobby" : [ "喝酒", "烫头", 1, 2, 3, 4, 5 ] }

pull

$pull == remove()

删除Array中的指定元素

db.stu.update({name:"小黑"},{ $pull: { hoobys:"渣男" } })

pullAll

删除Array中的多个元素

> db.stutent.find({name:"小漩涡"})
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩涡", "age" : 30, "hobby" : [ "喝酒", "烫头", 1, 2, 3, 4, 5 ] }

> db.stutent.update({name:"小漩涡"},{$pullAll:{hobby:[1,2,3,4,5]}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.stutent.find({name:"小漩涡"})
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩涡", "age" : 30, "hobby" : [ "喝酒", "烫头" ] }

pop

$pop约等于pop()

删除Array中的第一个或者最后一个元素 正数是倒序删除 负数是正序删除

> db.stutent.find({name:"小漩涡"})
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩涡", "age" : 30, "test_list" : [ 1, 2, 3, 4, 5, 1000 ], "hobby" : [ "喝酒", "烫头" ] }

> db.stutent.update({name:"小漩涡"},{$pop:{hobby:-1}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.stutent.find({name:"小漩涡"})
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩涡", "age" : 30, "test_list" : [ 1, 2, 3, 4, 5, 1000 ], "hobby" : [ "烫头" ] }

$ 字符特殊用法

在MongoDB中有一个非常神奇的符号 "$"

"$"  在 update 中 加上关键字 就 变成了 修改器

其实 "$" 字符 独立出现也是有意义的 , 我起名叫做代指符

存储当前(Array)符合条件的元素下标索引 ,只能存储最外层的 索引位置 

> db.stutent.find({name:"小漩涡"})
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩涡", "age" : 30, "test_list" : [ 1, 2, 3, 4, 5, 1000 ], "hobby" : [ "烫头" ] }

# 将test_list中的5改成五
# "test_list.$"必须加引号
> db.stutent.update({test_list:5},{$set:{"test_list.$":"五"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.stutent.find({name:"小漩涡"})                         ) )
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩涡", "age" : 30, "test_list" : [ 1, 2, 3, 4, "五", 1000 ], "hobby" : [ "烫头" ] }

# 先查询到hobbys中5的 位置(4) ,将位置存储在 $==(4) 字符中 然后根据$字符的位置(4)更改数据

原文地址:https://www.cnblogs.com/songzhixue/p/11203415.html

时间: 2024-11-07 05:34:26

MongoDB-比较符及修改器的相关文章

4,MongoDB 之 $关键字 及 $修改器 $set $inc $push $pull $pop MongoDB

我们在之前的 MongoDB 之 手把手教你增删改查 MongoDB - 2 中提到过 $set 这个系统关键字,用来修改值的对吧 但是MongoDB中类似这样的关键字有很多, $lt $gt $lte $gte 等等,这么多我们也不方便记,这里我们说说几个比较常见的 一.查询中常见的 等于 大于 小于 大于等于 小于等于 等于 : 在MongoDB中什么字段等于什么值其实就是 " : " 来搞定 比如 "name" : "路飞学城" 大于 :

Mongodb嵌套文档的修改-利用数组修改器更新数据

初学mongodb的可能和我一样有个疑问,mongodb是文档型的,那么如果一个文档嵌套另外一个文档,如果对这个嵌套文档进行增删改查呢. 就像如下这样:,如何对auther里面的name进行增删改查呢?这篇博客我们一起来看一下. 这里要用到几个修改器:$push,$pop,$pull 首先增加一个name: db.myFirstCollection.update({_id:1},{$push:{"auther":{"name":1}}}) 删除最后一个值,若要删除第

【MongoDB学习笔记8】深入MongoDB的更新(update)操作:修改器$set

MongoDB中文档存入数据库后用update方法更新文档,update方法有两个参数,例如 update(args1,args2) args1是指查询文档的条件: args2是指对查询到的文档进行什么样的修改: 一.文档替换 > joe1= db.post.findOne({"age":20}) {         "_id" :  ObjectId("54a530c3ff0df3732bac1680"),         "i

MongoDB数组修改器更新数据

MongoDB数组修改器更新数据 2013-04-22 10:20:40      我来说两句    来源:姜志福 的BLOG    收藏  我要投稿 MongoDB数组修改器更新数据 这里,我们将了解一下数组修改器.数组,是我们经常看到和使用到的且非常有用的数据结构:它不仅可以通过索进行引用,还可以作为集合来使用.数组修改器,顾名思义,它是用来修改数组的,而不能用来修改整数或者字符串.数组修改器不多,就那么几个,但熟练掌握它后,将给我们带来非常方便的操作.下面,我们来了解一下: > db.us

mongodb的修改器

在mongodb中通常文档只会有一部分要更新,利用原子的更新修改器,可以做到只更新文档的一部分键值,而且更新极为高效,更新修改器是种特殊的键,用来指定复杂的更新操作,比如调整.增加.或者删除键,还可以操作数组和内嵌文档.增加.修改或删除键的时候,应该使用$修改器.要把"foo"的值设备"bar",常见的错误做法如下: db.coll.update(criteria,{"foo":"bar"}) 这种情况是不对的,实际上这种做法

MongoDB数组修改器更新数据(转)

MongoDB数组修改器更新数据 这里,我们将了解一下数组修改器.数组,是我们经常看到和使用到的且非常有用的数据结构:它不仅可以通过索进行引用,还可以作为集合来使用.数组修改器,顾名思义,它是用来修改数组的,而不能用来修改整数或者字符串.数组修改器不多,就那么几个,但熟练掌握它后,将给我们带来非常方便的操作.下面,我们来了解一下: > db.user.findOne() { "_id" : ObjectId("4ffcb2ed65282ea95f7e3304"

MongoDB之修改器

MongoDB之修改器 $set  简单粗暴  {name: valuel} 直接将key对应的值赋值给value. db.xxoo.insert({}, {set: {key: value}}) # 相当于python中的dict['name'] = value $unset  简单粗暴的删除字段 {$unset: {name: 1}} # 相当于python中的del dict['name'] 0 原文地址:https://www.cnblogs.com/ZN-225/p/10174585.

MongoDB修改器的使用1

为什么要使用修改器?     通常我们只会修改文档的一部分,这时候更新整个文档就显得很麻烦,通常是通过原子性的更新修改器来完成. 1."$set"修改器    "$set"用来指定某个字段,如果不存在,则创建.这对部分更新或者添加来说就非常方便了. 如:  step1:往users数据库长如一条数据,通过JavaScript来完成:    var logs={name:"joe",age:30,sex:"female",loc

红色警戒2修改器原理百科(十)

(二十一)转换阵营--很炫酷却很简单 这个功能,貌似当初很火很轰动,感觉很强大--联网对战中控制对手单位,卖掉对手建筑!右边的建造选项也是对手的,你可以替对手建造单位.可是这个原理很简单,游戏中一个很重要的指针CurrentPlayer(即game.exe+635DB4这个基址)指向本地玩家的数据,你所有的操作依据最终都来源于此.如果你把这个指针指向对手的数据,游戏就认为你原本就是对手--这是游戏设计的缺陷. 但是只在联网对战中有效.单机时也有一定作用,能看到电脑的科技是全开的--当然除了超级武