zoukankan      html  css  js  c++  java
  • mongodb学习记录

    mongo

    show dbs查看所有的数据库

    使用use可以切换数据库,如果没有数据库则创建一个新的

    use local切换倒local数据库

    增加数据

    db.test.insert({name:"jack"})向test表中插入一条数据,如果没有test表则创建一个,如果传入一个文档数组则会批量插入。

    批量插入

    db.test.batchInsert([{"_id":0, "_id":1}])接受一个文档数组作为参数,如果插入过程中有个文档插入失败,该文档之前的都会成功插入,该文档和之后的文档则不会插入。

    3.4之后改成了

    db.test.insertMany()

    删除数据

    db.test.remove({name:"jack"})删除test表中所有name为jack的数据

    查找数据

    db.test.find()查看test表中所有数据等价于db.test.find({})

    db.test.findOne()查看一条数据

    使用查询操作符指定条件

    db.test.find({ name: { $in: ["jack", "alice"]}})查找name为jack和alice的所有数据

    db.test.find({ name: "jack", age: { $lt: 20}})查找name为jack并且age小于20

    嵌入文档的查询

    db.test.find({ favorites: { book: "python", food: "pizza"}})查询test表中favorites字段中book为python并且food为pizza的数据

    db.test.find({"favorites.book":"python"})

    数组上的查询

    db.test.find({ family: [ "father", "mather"]})查询所有family字段有且只有两个元素father,mather的数据

    db.test.find({ family: "fahter"})查询所有family字段中包含father的数据

    db.test.find({ "family.0": "father" })查询所有family字段中首个元素为fahter的数据

    db.users.find( { finished: { $elemMatch: { $gt: 15, $lt: 20 } } } )查询 finished 数组至少包含一个大于 ($gt15 并且小于 ($lt20 的元素的文档

    db.users.find( { finished: { $gt: 15, $lt: 20 } } )查询 finished 数组包含以某种组合满足查询条件的元素的文档;例如,一个元素满足大于 15 的条件并且有另一个元素满足小于 20 的条件,或者有一个元素满足了这两个条件

    嵌入文档数组

    db.users.find( { 'points.0.points': { $lte: 55 } } )查询使用 the dot notation 匹配所有 dadges 是第一个元素为``”black”`` 的数组的文档:如果你知道内嵌文档的数组索引,你可以使用 dot notation 及内嵌文档的位置指定文档

    db.users.find( { 'points.points': { $lte: 55 } } )选择出所有 points``数组中至少有一个嵌入文档包含值小于或等于 ``55 的字段 points 的文档:

    db.users.find( { points: { $elemMatch: { points: { $lte: 70 }, bonus: 20 } } } )查询 points 数组有至少一个包含 points 小于等于 70 并且字段 bonus 等于 20 的内嵌文档的文档

    db.users.find( { "points.points": { $lte: 70 }, "points.bonus": 20 } )查询了 points 数组包含了以某种组合满足查询条件的元素的文档;例如,一个元素满足 points 小于等于 70 的条件并且有另一个元素满足 bonus 等于 20 的条件,或者一个元素同时满足两个条件

    $lt 小于(less then)

    $lte 小于等于(less then equal)

    $gt 大于(great then)

    $gte 大于等于(great then equal)

    修改数据

    db.test.update({name:"jack"}, {name:"mike"})将test表中name为jack的数据改为name等于mike,如果jack里面有其他的字段会全部被删除,如果不想删除,可以使用下面的命令

    1.$inc

    用法:{$inc:{field:value}}

    作用:对一个数字字段的某个field增加value

    示例:将name为chenzhou的学生的age增加5

    Shell代码  收藏代码
    1. > db.students.find()  
    2. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou", "age" : 22 }  
    3. #查询结果显示年龄为22  
    4. > db.students.update({name:"chenzhou"},{$inc:{age:5}})  
    5. #执行修改,把age增加5  
    6. > db.students.find()  
    7. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou", "age" : 27 }  
    8. >   
    9. #查询结果显示年龄为27,修改成功  

    2.$set

    用法:{$set:{field:value}}

    作用:把文档中某个字段field的值设为value

    示例: 把chenzhou的年龄设为23岁

    Shell代码  收藏代码
    1. > db.students.find()  
    2. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou", "age" : 27 }  
    3. > db.students.update({name:"chenzhou"},{$set:{age:23}})  
    4. > db.students.find()  
    5. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou", "age" : 23 }  
    6. >   

    从结果可以看到,更新后年龄从27变成了23

    3.$unset

    用法:{$unset:{field:1}}

    作用:删除某个字段field

    示例: 将chenzhou的年龄字段删除

    Shell代码  收藏代码
    1. > db.students.find()  
    2. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou", "age" : 23 }  
    3. > db.students.update({name:"chenzhou"},{$unset:{age:1}})  
    4. > db.students.find()  
    5. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou" }  
    6. >   

    4.$push

    用法:{$push:{field:value}}

    作用:把value追加到field里。注:field只能是数组类型,如果field不存在,会自动插入一个数组类型

    示例:给chenzhou添加别名"michael"

    Shell代码  收藏代码
    1. > db.students.find()  
    2. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou" }  
    3. > db.students.update({name:"chenzhou"},{$push:{"ailas":"Michael"}})  
    4. > db.students.find()  
    5. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "Michael" ], "name" : "chenzhou" }  
    6. >   

    由结果可以看到,记录中追加了一个数组类型字段alias,且字段有一个为"Michael"的值

    5.pushAll

    用法:{$pushAll:{field:value_array}}

    作用:用法同$push一样,只是$pushAll可以一次追加多个值到一个数组字段内。

    示例:给chenzhou追加别名A1,A2

    Shell代码  收藏代码
    1. > db.students.find()  
    2. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "Michael" ], "name" : "chenzhou" }  
    3. > db.students.update({name:"chenzhou"},{$pushAll:{"ailas":["A1","A2"]}})  
    4. > db.students.find()  
    5. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "Michael", "A1", "A2" ], "name" : "chenzhou" }  
    6. >   

    6.$addToSet

    用法:{$addToSet:{field:value}}

    作用:加一个值到数组内,而且只有当这个值在数组中不存在时才增加。

    示例:往chenzhou的别名字段里添加两个别名A3、A4 

    Shell代码  收藏代码
    1. > db.students.find()  
    2. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "Michael", "A1", "A2" ], "name" : "chenzhou" }  
    3. > db.students.update({name:"chenzhou"},{$addToSet:{"ailas":["A3","A4"]}})  
    4. > db.students.find()  
    5. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "Michael", "A1", "A2", [ "A3", "A4" ] ], "name" : "chenzhou" }  
    6. >   

    由结果可以看出,更新后ailas字段里多了一个对象,这个对象里包含2个数据,分别是A3、A4

    7.$pop

    用法:删除数组内第一个值:{$pop:{field:-1}}、删除数组内最后一个值:{$pop:{field:1}}

    作用:用于删除数组内的一个值

    示例: 删除chenzhou记录中alias字段中第一个别名

    Shell代码  收藏代码
    1. > db.students.find()  
    2. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "Michael", "A1", "A2", [ "A3", "A4" ] ], "name" : "chenzhou" }  
    3. > db.students.update({name:"chenzhou"},{$pop:{"ailas":-1}})  
    4. > db.students.find()  
    5. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "A1", "A2", [ "A3", "A4" ] ], "name" : "chenzhou" }  
    6. >   

    由结果可以看书,第一个别名Michael已经被删除了。

    我们再使用命令删除最后一个别名:

    Shell代码  收藏代码
    1. > db.students.find()  
    2. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "A1", "A2", [ "A3", "A4" ] ], "name" : "chenzhou" }  
    3. > db.students.update({name:"chenzhou"},{$pop:{"ailas":1}})  
    4. > db.students.find()  
    5. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "A1", "A2" ], "name" : "chenzhou" }  
    6. >   

    由结果可以看出,alias字段中最后一个别名["A3","A4"]被删除了。

    8.$pull

    用法:{$pull:{field:_value}}

    作用:从数组field内删除一个等于_value的值

    示例:删除chenzhou记录中的别名A1

    Shell代码  收藏代码
    1. > db.students.find()  
    2. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "A1", "A2" ], "name" : "chenzhou" }  
    3. > db.students.update({name:"chenzhou"},{$pull:{"ailas":"A1"}})  
    4. > db.students.find()  
    5. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "A2" ], "name" : "chenzhou" }  
    6. >   

    9.$pullAll

    用法:{$pullAll:value_array}

    作用:用法同$pull一样,可以一次性删除数组内的多个值。

    示例: 删除chenzhou记录内的所有别名

    Shell代码  收藏代码
    1. > db.students.find()  
    2. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "A1", "A2" ], "name" : "chenzhou" }  
    3. > db.students.update({name:"chenzhou"},{$pullAll:{"ailas":["A1","A2"]}})  
    4. > db.students.find()  
    5. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ ], "name" : "chenzhou" }  
    6. >   

    可以看到A1和A2已经全部被删除了

    10.$rename

    用法:{$rename:{old_field_name:new_field_name}}

    作用:对字段进行重命名

    示例:把chenzhou记录的name字段重命名为sname

    Shell代码  收藏代码
    1. > db.students.find()  
    2. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ ], "name" : "chenzhou" }  
    3. > db.students.update({name:"chenzhou"},{$rename:{"name":"sname"}})  
    4. > db.students.find()  
    5. "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ ], "sname" : "chenzhou" }  
    6. >   

    由结果可以看出name字段已经被更新为sname了。

    参考自http://chenzhou123520.iteye.com/blog/1637629

    db.test.save({name:"alice"})如果没有该数据则创建一个新的数据,有的话就更新

    linux中在当前用户的主目录下(/home/xxx)创建一个.mongorc.js

    mongo运行shell之前会加载该文件

    可以在文件中重写删除操作来避免删除数据

    可以指定EDITOR="/usr/bin/vim"之后就可以edit编辑shell中的变量了

    在shell中可以用for循环来遍历数据

    var collections = ["a", "b", "c"]
    for (var i in collections){
        print(collections[i])
    }
    db.createCollection( "contacts",
       { validator: { $or:
          [
             { phone: { $type: "string" } },
             { email: { $regex: /@mongodb.com$/ } },
             { status: { $in: [ "Unknown", "Incomplete" ] } }
          ]
       }
    } )

    使用validator来验证字段是否满足要求

    db.runCommand( {
       collMod: "contacts",
       validator: { $or: [ { phone: { $exists: true } }, { email: { $exists: true } } ] },
       validationLevel: "moderate"
    } )

    用runCommand来修改集合中字段的验证

    更多内容请查看官方文档地址http://docs.mongoing.com/manual-zh/mongo.html

  • 相关阅读:
    软件工程网络15结对编程作业
    软件工程网络15个人阅读作业2-提出问题
    软件工程网络15个人阅读作业1
    陈敏 Java课设实验报告
    201521123099 《Java程序设计》第13周学习总结
    201521123027 <java程序设计>第十二周作业总结
    201521123099 《Java程序设计》第11周学习总结
    Java程序设计——学生信息系统
    201521123097《Java程序设计》第十一周学习总结
    201521123097《Java程序设计》第十周学习总结
  • 原文地址:https://www.cnblogs.com/lgh344902118/p/7156705.html
Copyright © 2011-2022 走看看