• MongoDB第二天


    集合的操作:

    db.表名称

    show tables / collection

    db.表名.drop()

    文档的操作:

    插入数据

    db.表名.insert({"name":"jerry"})

    db.insertMany([{"name":"sb",...}])

    var ul = {"name":"sb"}

    db.sb.insert(ul)

    db.sb.save()如果没有则创建,有则覆盖

    查询数据

    db.sb.find({""筛选条件""},{""控制要显示的字段":1"})

    比较运算符

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

    逻辑运算符:

    and or not 

    db.sb.find({"name":"sb","_id":23})      等同于and

    db.sb.find({"$or":[{"name":"sb"},{"name":"lj"}]})

    查询id为偶数的

    db.user.find({"_id":{"$mod":[2,0]}})

    取反

    db.user.find({"_id":{"$not":{"$mod":[2,1]}}})

    成员运算符:

    id 在列表1,2,3,4中的

    db.user.find({"_id":{"$in":[1,23,4]}})

    不在列表中的

    db.user.find({"_id":{"$nin":[1,23,4]}})

    正则:

    db.user.find({"name":/^sb.*?b$/i})

    更新修改数据

    update()方法用于更新已存在的文档,语法格式如下:

    db.sb.update(<query>,<update>,{upsert:<boolean>,multi:<boolean>,writeConcern:<document>})

    参数说明:

    query:相当于where条件

    update:update的对象和一些更新的操作符($inc)

    upsert:可选,默认为false,代表如果不存在update的记录则不更新也不插入,设置为true代表插入

    multi:可选,默认为false,代表只更新找到的第一条记录,设为true,代表更新找到的所有记录

    writeConcern:可选,抛出异常的级别

    更新操作是不可分割的:若两个更新同时发送,先到达服务器的先执行,然后执行另外一个,不会破坏文档

    除非是删除,否则_id是始终不会改变的

    1.覆盖式

    db.user.update({"age":20},{"name":"sb","hobbies":[1,2,3]})

    是使用新的数据覆盖原来的数据

    2.一种最简单的更新就是用一个新的文档完全替换匹配的文档

    这适用于大规模式迁移的情况,

    var obj = db.user.findOne({"_id":2})

    obj.username=obj.name+"sb"

    delete obj.age

    db.user.update({"_id":2,obj})

    设置set

    通常文档只会有一部分需要更新,可以使用原子性的更新修改器,指定对文档中的某些字段进行更新.

    更新修改器是种特殊的键,用来指定复杂的更新操作,比如修改,增加或者删除

    1.db.user.update({"_id":2},{"$set":{"name":"wxx"}})

    2.没有匹配成功则新增一条

    db.user.update({"_id":6},{"$set":{"name":"egon","age":80}},{"upsert":true})

    3.默认只改匹配成功的第一条,{"multi":该多条}

    db.user.update({"_id":{"$gt":3}},{"$set":{"gae":28}},{"multi":true})

    4.修改内嵌文档,把名字为alex的人所在的地址国家改为japan

    db.user.update({'name':'alex'},{"$set":{"addr.country":"japan"}})

    5.把名字为alex的人的第二个爱好改成嫖

    db.user.update({"name":"alex"},{'$set':{'hobbies.1':"piao"}})

    6.删除alex的爱好,$unset

    db.user.update({'name':'alex'},{'$unset':{"hobbies":""}})

    增加和减少 $inc

    1.所有人的年龄增加一岁

    db.user.update({},{"$inc":{"age":1}},{"multi":true})

    2.所有人年龄减少5岁

    db.user.update({},{"$inc":{"age":-5}},{"multi":true})

    添加删除数组元素

    往数组内添加元素:$push

    1.为名字为yuanhao的人添加一个爱好read

    db.user.update({"name":"yuanhao"},{"$push":{"hobbies":"read"}})

    2.为名字为yuanhao的人一次添加多个爱好tea,dancing

    db.user.update({"name":"yuanhao"},{"$push":{"hobbies":{"$each":["tea","dancing"]}}})

    3按照位置只能从开头或结尾删除元素:$pop

    3.{"$pop":{"key":1}}从数组末尾删除一个元素

    db.user.update({"name":"yuanahao"},{"$pop":{"hobbies":1}})

    4.{"$pop":{"key":-1}}从头部删除

    db.user.update({"name":"yuanhao"},{"$pop":{"hobbies":-1}})

    5.按照条件删除元素:$pull 把符合条件的统统删掉,而$pop只能从两端删除

    db.user.update({"addr.country":"China"},{"$pull":{"hobbies":"read"}},{"multi":true})

    避免添加重复:$addToSet

    自动去除重复

    db.user.insert({"_id":1},"urls":[])

    db.user.update({"_id":1},{"$addToSet":{"urls":'http://129.0.0.1.com'}})

    其他

    1.限制大小$slice 直流最后几个

    db.user.update({"_id":5},{"$push":{"hobbies":{"$each":['rad','write','dacing'],

    '$slice":-2'}}})

    #2、了解:排序

    The $sort element value must be either 1 or -1"

    db.user.update({"_id":5},{

    "$push":{"hobbies":{

    "$each":["read",'music','dancing'],
    "$slice":-1,
    "$sort":-1
    }
    })

    删除数据

    1.删除多个中的一个

    db.user.deleteOne({"age":18})

    2.删除国家为China的全部

    db.user.deleteMany({})

  • 相关阅读:
    java 包
    数据库查询操作练习
    solr全文检索实现原理
    前端页面设计问题小计
    送给自己的九封信
    bootstrap-table初使用
    bootstrap-treeview初使用
    windows:plsql配置oracle连接
    maven的安装和配置
    cxf+spring+restful简单接口搭建
  • 原文地址:https://www.cnblogs.com/suncunxu/p/10718494.html
Copyright © 2020-2023  润新知