MongoDB小结08 - update【$pull】】的更多相关文章

它可以删除所匹配的值,如果[1,1,2,1] 执行pull 1 后,只剩下[2]…
了解应用的动态 1. 了解正在进行的操作:db.currentOp() , 可以加过滤条件,从而只显示符合条件的结果. 1). 寻找有问题的操作:db.currentOp() 最常见的操作就是用来寻找速度较慢的操作 2). 终止操作的执行:将该操作的opid作为参数,执行db.killOp()来终止该操作的执行.并非所有操作都能被终止.一般来讲,只有交出了锁的进程才能被终止. 3). 假象:在查找哪些操作耗时过长时,可能会发现一些长时间运行的内部操作.所有local.oplog.rs中长时间运行…
现在有一种查询变得越来越流行(尤其是移动设备):找到离当前位置最近的N个场所. MongoDB专为平面坐标查询做了专门的索引,称为地理空间索引. 同样需要用ensureIndex创建,不过,参数是两个 "2d" db.map.ensureIndex({"gps":"2d"}) gps键的值必须是某种形式的一对值:一个包含两个元素的数组或者包含两个键的内嵌文档,像这样 {"gps":[0,100]} {"gps&quo…
只要满足索引的其中之一不同即可 db.blog.ensureIndex({"username":1,"blogname":1}) 作者和作品名其中之一不同即可创建复合唯一索引. explain() hint() explain()可以返回查询使用的索引情况 hint()可以强制cursor使用某索引 但是通常MongoDB 的查询优化器非常智能,会替你选择改用哪一个索引.…
MongoDB中的索引,可以看作是书的目录. 想象一下给你一本没有目录的书,然后让你去查询指定内容,我只想说,我不是电脑,我很蛋疼! 让你翻没有目录的书,就跟让电脑查询没有索引的集合一样,从头查询到尾,毫无头绪,我们称这种行为是"表扫描" 索引简介 通常我们要查询一个user的名字,我们是这样的 db.user.find({"username":"codingwhy"}) 如果我们经常需要对username进行查询,那么我们可以为它建立索引 db…
MongoDB的文档必须有一个_id键. 目的是为了确认在集合里的每个文档都能被唯一标识. ObjectId 是 _id 的默认类型. ObjectId 采用12字节的存储空间,每个字节两位16进制数字,是一个24位的字符串. 12位生成规则: [0,1,2,3] [4,5,6] [7,8] [9,10,11] 时间戳 |机器码 |PID |计数器 前四位是时间戳,可以提供秒级别的唯一性. 接下来三位是所在主机的唯一标识符,通常是机器主机名的散列值. 接下来两位是产生ObjectId的PID,确…
第一个参数 MongoDB使用find来进行查询,查询呢,就是返回一个集合中文档的子集,子集合的范围从0个文档到整个集合. find的第一个参数决定了要返回那些文档,其形式也就一个文档,说明了要执行的查询细节. 通常呢,大家看到的find查询基本都长这个样子 db.user.find({}) db.user.find({"name":"qianjiahao"}) db.user.find({"name":"qianjiahao"…
upsert是一个选项,它是update的第三个参数,并不是一个方法.它是一种特殊的更新,要是没有文档符合匹配,那么它就会根据条件和更新文档为基础,创建新的文档,如有匹配,则正常更新.咱们之前见到的所有update操作,都是建立在有文档的基础之上的.upsert非常方便,不必预制集合,同一套代码既可以创建又可以更新. 超市需要修改商品的价格,比如将苹果的价格上调0.5元,但是店主不确定自己是否有购进苹果(偶尔会犯糊涂),那么他可以这样 db.supermarket.update({"name&q…
如果要操作数组中的值,可以用值在数组中的位置当做参数来删除 db.user.update({"name":"codingwhy.com"},{"$set":{"hobby.0":"crying"}}) { "_id" : ObjectId("55082691591555a6c35dd698"), "name" : "codingwhy.c…
连接MongoDB(bin目录下) ./mongo 如果觉得shell里空空的可以输入help,在刷屏的同时大致了解下有哪些方法 help 现在咱们还没有数据库,咱们创建一个,任性起名:template use template 咱们确认下,数据库有没有创建成功 show dbs template 0.078GB 如果存在template,就进入,如果没有,在最后保存的时候就会创建template insert 发现已经创建成功,继续走,现在咱们创建一个集合,任性起名:room,再插入点数据 d…