美文网首页
MongoDB 编程笔记

MongoDB 编程笔记

作者: If_54ea | 来源:发表于2019-12-13 09:50 被阅读0次
    插入
    use test
    show collections
    /*填写注释*/
    db.stus.insert({name:"猪八戒",age:28,gender:"男"})
    db.stus.insert([
        {name:"沙和尚",age:38,gender:"男"},    
        {name:"白骨精",age:16,gender:"女"},    
        {name:"蜘蛛精",age:14,gender:"女"}
    ])
    db.stus.insert({_id:"85",name:"猪八戒",age:28,gender:"男"})  /* _id 具有唯一性 */
    db.stus.find()
    db.stus.find().pretty()
    

    db.stus.insertOne() 用于插入一个文档对象

    db.stus.insertMany() 用于插入多个文档对象

    db.stus.insert() 既可以插入一个文档对象,又可以插入多个文档对象

    //插入多条数据
    for (var i=1;i<=100;i++)
    {
        db.try.insert({num:i});
    }
    db.try.find()
    db.try.find().count()
    
    //另一种插入方法,更节省时间
    var a=[];
    for (var i=1;i<=100;i++)
    {
        a.push({num:i});
    }
    db.try2.insert(a);
    
    查询
     /*用于查询符合条件的第一个文档,find()返回一个数组,findOne()返回一个文档*/
     db.stus.find({age:28})
     db.stus.findOne({age:28}) 
     db.stus.find({age:28})[0]
     db.stus.find({age:28})[1]
     db.stus.find().count()   /*计算大小/长度*/
     db.stus.find().length()
     
     //第二个{}中表示结果只显示age属性,默认包括_id属性,若不需要可设置为{_id:0,age:1}
     db.stus.find({},{age:1})  
    

    db.stus.find()能查询集合中所有的文档

    修改
    /*db.<collection>.update(查询条件,新对象)*/
    db.stus.find()
    db.stus.update({name:"沙和尚"},{age:28})db.stus.find()  
    /*update默认使用新对象替换旧对象*/
    //$set 修改/设置指定属性
    //用_id来作为选择标准
    //仅修改name属性,若不存在该属性则添加
    db.stus.update(    
        {"_id" : ObjectId("5dd3aeb5a05414317760fb14")},
        {$set:{name:"沙和尚"}})
    db.stus.find({"_id" : ObjectId("5dd3aeb5a05414317760fb14")})
    db.stus.update(
        {"_id" : ObjectId("5dd3aeb5a05414317760fb14")},
        {$set:{
        gender:"男",
        address:"流沙河"
    }})
    db.stus.find({"_id" : ObjectId("5dd3aeb5a05414317760fb14")})
    
    //$unset删除文档指定属性,address:"流沙河" 改写为address:1 同样有效
    db.stus.update(
        {"_id" : ObjectId("5dd3aeb5a05414317760fb14")},     
        {$unset:{        
        address:"流沙河"    
        }})
    db.stus.find({"_id" : ObjectId("5dd3aeb5a05414317760fb14")})
    
    //对于多个符合查询要求的文档,update默认修改第一个
    db.stus.find({name : "猪八戒"})
    db.stus.update(
        {name : "猪八戒"},
        {$set:{    address:"高老庄"    
        }})
    db.stus.find({name : "猪八戒"})
    //updateMany可同时修改多个文档,updateOne仅修改一个文档
    db.stus.updateMany(
        {name : "猪八戒"},     
        {$set:{    address:"高老庄"    
        }})
    db.stus.find({name : "猪八戒"})
    //使用update修改多个文档,增加multi属性,设置为true
    db.stus.update(    
        {name : "猪八戒"},     
        {$set:{    address:"高老庄2"    }},    
        {multi:true})
    db.stus.find({name : "猪八戒"})
    
    db.stus.replace()  //用于替换
    
    //$inc 在原来的值上增加,值为负数则直接在原来的值上减少
    db.stus.update(        
        {"_id" : ObjectId("5dd3aeb5a05414317760fb14")},
        {$inc:{age:4}})
    

    比较查询

    //大于20
    db.try.find({num:{$gt:20}})
    /*
    $gt:greater than
    $gte:greater than or equal
    $eq:equal
    $lt:less than
    $lte:less than or equal
    */
    //大于40小于50
    db.try.find({num:{$gt:40,$lt:50}})
    //大于60或小于30
    db.try.find({$or:[{num:{$gt:60}},{num:{$lt:30}} ]})
    //查看前10条数据
    db.try.find().limit(10)
    //查看第11条到20条数据,skip用于跳过前n条数据
    db.try.find().skip(10).limit(10)
    //查看第21条到30条数据
    db.try.find().skip(20).limit(10)
    
    
    删除
    db.stus.find()
    db.stus.remove({_id:"85"})  //删除全部符合要求的文档
    db.stus.find()
    //db.stus.deleteOne() 删除一个,db.stus.deleteMany()删除多个
    db.stus.remove({}) //删除全部文档
    db.stus.remove({name : "猪八戒"},true) //删除第一个符合条件的文档
    
    
    show collections
    db.runoob.drop()  //删除集合
    
    
    内嵌文档
    db.col.insert({name:"one",hobby:["run","swim"]})
    db.col.find()
    db.col.insert({name:"two",hobby:{run:["5km","10km"],swim:["50m","100m"]}})
    //mongoDB支持直接通过内嵌文档的属性来查询,属性名称必须加""
    db.col.find({"hobby.swim":"100m"})
    db.col.find({name:"two"})
    //$push向数组中增加元素,$addToSet也具有同样功能,但若已存在增加项,则不会再次增加,而$push会重复增加
    db.col.update({name:"two"},{$push:{"hobby.run":"3km"}})
    db.col.find({name:"two"})
    db.col.update({name:"two"},{$push:{"hobby.run":"3km"}})  //重复增加
    db.col.find({name:"two"})
    db.col.update({name:"two"},{$addToSet:{"hobby.run":"20km"}})  //第一次增加
    db.col.find({name:"two"})
    db.col.update({name:"two"},{$addToSet:{"hobby.run":"20km"}}) //第二次,已存在20km,则不新增
    db.col.find({name:"two"})
    
    
    文档之间的关系

    一对多,多对一,一对一,多对多

    //一对一
    db.wAndh.insert({ name:"w1", h:{name:"h1"}})
    db.wAndh.find()
    db.wAndh.insert({ name:"w2", h:{name:"h2"} }, { name:"w3", h:{name:"h3"} })
    db.wAndh.find()
    //一对多,属性变为数组模式["","",""]
    
    
    //一对多
    db.a.insert([{name:"a1"},{name:"a2"}])
    db.a.find() 
    //用id来确定这是xxx的属性
    db.order.insert({list:["b1","b2","b3"],name_id:ObjectId("5dd4abb227fdc1871920499b") })
    db.order.insert({list:["b4","b5","b3"],name_id:ObjectId("5dd4abb227fdc1871920499b") })
    db.order.insert({list:["b4","b3"],name_id:ObjectId("5dd4abb227fdc1871920499c") })
    db.order.find()
    //查找a的b
    var a_id = db.a.findOne({name:"a2"})._id; //将a中a1的id值取出来db.order.find({name_id:a_id});
    
    
    //多对多
    db.a.drop()
    db.a.insert([{name:"a1"},{name:"a2"},{name:"a3"}])
    db.a.find()
    db.b.insert([
        {name:"b1",a_ids:[ObjectId("5dd4afe927fdc187192049a3"),                     
                          ObjectId("5dd4afe927fdc187192049a4")]},
        {name:"b2",a_ids:[ObjectId("5dd4afe927fdc187192049a3"),
                          ObjectId("5dd4afe927fdc187192049a4"),      
                          ObjectId("5dd4afe927fdc187192049a5")]}
        ])
    db.b.find()
    
    

    排序:

    sort{a:1,b:-1} :先按照a的属性进行升序排列,然后在a排序后具有共同位置(a的值相等)时按照b的属性进行降序排列

    limit skip sort 可按照任意顺序进行调用

    相关文章

      网友评论

          本文标题:MongoDB 编程笔记

          本文链接:https://www.haomeiwen.com/subject/oizxnctx.html