zoukankan      html  css  js  c++  java
  • [ 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删除数组中指定条件的数据。

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

  • 相关阅读:
    用wamp配置的环境,想用CMD连接mysql怎么连
    Mysql删除表
    MySQL创建表
    Leetcode 130. Surrounded Regions
    Leetcode 111. Minimum Depth of Binary Tree
    Leetcode 110. Balanced Binary Tree
    Leetcode 98. Validate Binary Search Tree
    Leetcode 99. Recover Binary Search Tree
    Leetcode 108. Convert Sorted Array to Binary Search Tree
    Leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal
  • 原文地址:https://www.cnblogs.com/huangfox/p/2433067.html
Copyright © 2011-2022 走看看