• [ mongoDB ] mongoDB的基本操作


    mongoDB的基本操作

    强烈推荐参考官方用户手册:

    http://www.mongodb.org/display/DOCS

     

    1)插入(insert)

    插入的value是json对象,以下示例循环添加了10个用户信息,字段可以是字符串、数值、对象、数组等。

    通过VUE查看:

    2)查询(find)

    2.1——查询全部内容:

    db.user.find({}) 

    我们可以称{}中的内容为选择器,这里选择器为空,可以省略,指获取collection中所有内容。

    2.2——字段查询

    db.user.find({name:'fox1'})

    2.3——排序(sorting)

    db.user.find({}).sort({age:1})

    1代表升序,-1代表降序

    2.4——skip and limit(可以用于分页)

    db.user.find({ }).skip(5).limit(5).sort({ "age" : 1 });

    例如,对user表进行分页,写一个js函数提供分页功能。

    function pagination(pageNumber , nPerPage){
    db.user.find().skip((pageNumber-1)*nPerPage).limit(nPerPage).forEach(
    function(user){print(user.name+"<p>")});}
    

    2.5——游标

    var cur=db.user.find();

    cur.forEach(function(x){ print(tojson(x))});

    具体参考:

    http://www.mongodb.org/display/DOCS/Querying

    高级查询

    参考:http://www.mongodb.org/display/DOCS/Advanced+Queries

    2.6——条件运算符

    #<,<=,>,>=

    #查找18<age<28的用户

    db.user.find({age:{$gt:18,$lt:28}})

     

    #$all,全包含

    #查找邮箱在'fox@126.com','hg0@fox.com'范围内的用户

    db.user.find({email:{$all:['fox@126.com','hg0@fox.com']}})

     

    #$exists,表示字段是否存在

    #查找存在字段a的用户

    db.user.find({a:{$exists:true}})

    #$mod,取模

    #找到本命年的用户

    db.user.find({age:{$mod:[12,0]}})

    等价于:

    db.user.find("this.age % 12 == 0")

    #$ne,不等于

    #获取age不等于10的用户

    db.user.find({age:{$ne:10}})

    #$in,$nin

    db.user.find({age:{$in:[10,12,14]}})

    db.user.find({age:{$nin:[10,12,14]}})

    #$nor,$or,$and 关系运算符

    #查找age<15或者age>25的用户,并按照age排序

    db.user.find({$or:[{age:{$lt:15}},{age:{$gt:25}}]}).sort({age:1})

    #$size

    #查找有两个邮箱地址的用户

    db.user.find({email:{$size:2}})

    #$type

    #根据字段类型进行查找

    字段类型对应关系

    Type NameType Number
    Double 1
    String 2
    Object 3
    Array 4
    Binary data 5
    Object id 7
    Boolean 8
    Date 9
    Null 10
    Regular expression 11
    JavaScript code 13
    Symbol 14
    JavaScript code with scope 15
    32-bit integer 16
    Timestamp 17
    64-bit integer 18
    Min key 255
    Max key 127

    2.7——正则查询

    2.8——数据中数据的查询

    #可以直接对数组中的某一个元素进行检索

    #查询邮箱包含hg6@fox.com的用户

    db.user.find({email:'hg6@fox.com'})

    #elemMatch

    #数组元素中应用数学表达式(match expression)

    2.9——embedded Object(内置对象属性查询)

    #查询在长沙的用户

    db.user.find({'address.city':'changsha'})

    注意:此时的address.city需要引号(整体化)

    2.10——非

    #$not

    #查找大于等于15岁的用户

    db.user.find({age:{$not:{$lt:15}}})

    注意:

    db.user.find({$not:{age:{$gt:15}}})不正确!!!

    2.11——js表达式

    #查找age大于25的用户

    a) db.user.find({age:{$gt:25}})

    b) db.user.find({$where:"this.age > 25"})

    c) db.user.find("this.age > 25")

    d) f = function(){return this.age>25;}

        db.user.find(f)

    写复杂条件,这个$where比较方便强大了!

    3)更新(update)

    3.1——更新语法:db.collection.update( criteriaobjNewupsertmulti )

    criteria:数据范围,需要修改数据的查询条件

    objNew:更新数据

    upsert:如果没有查询到则新增,但只新增一条数据

    multi :默认只更新第一条数据

    3.2——#$inc

    #必须是数值型字段

    #给fox1加一岁

    db.user.update({name:'fox1'},{$inc:{age:1}})

    3.3——#$set

    #给fox1变成10岁

    db.user.update({name:'fox1'},{$set:{age:10}})

    3.4——#$unset

    #删除某个字段

    3.5——#针对数组的操作:$push,$pushAll,$addToset,$each,$pop,$pull,$pullAll

    #给fox1新增一个邮箱($push)

    db.user.update({name:'fox1'},{$push:{email:'fire009@126.com'}})

    #$pop:{field:1}删除最后一个元素,$pop:{field:-1}删除第一个元素。

    #$pull删除数组中指定条件的数据。

    #使用$进行位置上的操作(指定数组上某个元素)

  • 相关阅读:
    P2480 [SDOI2010]古代猪文(CRT+Lucas+费马小定理)
    P2473 [SCOI2008]奖励关(状压+期望dp)
    P2485 [SDOI2011]计算器(快速幂+扩欧+bsgs)
    板子
    https://lydsy.download/archive/
    [SDOI2010]地精部落(dp)
    P2446 [SDOI2010]大陆争霸(有限制的最短路)
    博客园在页面内设置超链接
    Matlab 绘制双纵轴图
    Matlab画图线型、符号及颜色汇总
  • 原文地址:https://www.cnblogs.com/huangfox/p/2433067.html
Copyright © 2020-2023  润新知