zoukankan      html  css  js  c++  java
  • mongodb_创建、删除、更新(转并学习) 简单

    <?php
    /*
    mongodb_创建、删除、更新(转并学习)
    
    1.创建新增操作
    
    db.a.insert({"name":"jk"})
    --insert函数,直接将文档做参数,保存到集合a中。
    
    2.删除操作
    
    db.a.remove()
    --删除a集合中的所有文档,但不删除集合本身,原有的索引也保留。
    
    db.a.remove({"name":"jk"})
    --删除a集合中含有name为jk的所有文档。
    --支持以一个查询文档作为可选参数,可删除满足该参数的所有文档
    --删除数据时永久性的,不能撤销,也不能恢复。
    
    db.a.drop()
    --删除a集合,包括a集合中所有文档。
    
    
    3.更新文档
    
    1>.修改的目标文档
    2>.修改器 描述对找到的文档做哪些修改
    3>.更新操作是原子的:若两个更新同时发生,先到达服务器的先执行,接着执行另外一个。因此相互有冲突的更新可以火速传递,并不会相互干扰;最后的更新会取得“胜利”。
    
    ==============================单个文档更新替换====================
    
    针对模式结构发生较大变化场合,将下面文档1:
    {"uid":"20120001","type":"1","num":30,"desc":"hello world!"}
    
    修改成以下文档2:
    {"uuid":"20120001",
     "utext":{
      "type":"1","num":30,"desc":"hello world!"
     }
    }
    
    具体的操作如下:
    > db.a.insert({"uid":"20120001","type":"1","num":30,"desc":"hello world!"})
    > db.a.findOne()
    { "_id" : ObjectId("5002112a81b954b6161a7d8d"), "uid" : "20120001", "type" : "1"
    , "num" : 30, "desc" : "hello world!" }
    >var obj = db.a.findOne({"uid":"20120001"})
    >obj.utext={"type":"1","num":30,"desc":"hello world!"}
    { "type" : "1", "num" : 30, "desc" : "hello world!" }
    > obj.uuid = obj.uid
    20120001
    >delete obj.type
    true
    >delete obj.num
    true
    >delete obj.desc
    true
    >delete obj.uid
    true
    >db.a.update({"uid":"20120001"},obj)
    > db.a.findOne()
    {
            "_id" : ObjectId("5002112a81b954b6161a7d8d"),
            "utext" : {
                    "type" : "1",
                    "num" : 30,
                    "desc" : "hello world!"
            },
            "uuid" : "20120001"
    }
    
    
    1>.当更新的对象是更新时查找出的第一条记录情况:
    保存如下文档:
    {"uid":"20120002","type":"2","num":40,"desc":"hello world1!"}
    {"uid":"20120002","type":"1","num":50,"desc":"hello world2!"}
    
    > db.a.find({"uid":"20120002"})
    { "_id" : ObjectId("500216de81b954b6161a7d8f"), "uid" : "20120002", "type" : "2"
    , "num" : 40, "desc" : "hello world2!" }
    { "_id" : ObjectId("50026affdeb4fa8d154f8572"), "uid" : "20120002", "type" : "1"
    , "num" : 50, "desc" : "hello world1!" }
    
    > var p = db.a.findOne({"uid":"20120002","type":"2"})
    > p.type="3"
    3
    > db.a.update({"uid":"20120002"})
    > db.a.find()
    { "_id" : ObjectId("500216de81b954b6161a7d8f"), "uid" : "20120002", "type" : "3"
    , "num" : 40, "desc" : "hello world2!" }
    { "_id" : ObjectId("50026affdeb4fa8d154f8572"), "uid" : "20120002", "type" : "1"
    , "num" : 50, "desc" : "hello world1!" }
    
    更新结果:update时将查找出满足条件的第一条记录进行更新,其他记录不变。
    
    2>.当更新的对象是不是更新时查找出的第一条记录情况:
    接上例继续:
    > var o = db.a.findOne({"uid":"20120002","type":"1"})
    > o.type="4"
    4
    > db.a.update({"uid":"20120002"},o)
    cannot change _id of a document old:{ _id: ObjectId('500216de81b954b6161a7d8f'),
     uid: "20120002", type: "3", num: 40.0, desc: "hello world2!" } new:{ _id: Objec
    tId('50026affdeb4fa8d154f8572'), uid: "20120002", type: "4", num: 50.0, desc: "h
    ello world1!" }
    
    更新结果:update更新第一条时o的"_id"与第二条记录的"_id"重复而出错。
    =====================单个文档更新替换=====================
    
    
    =====================多个文档更新替换=====================
    默认情况下,更新只能对符合条件的第一个文档进行操作。多文档更新主要涉及update方法的第四个参数,默认为false,若设置为true,即进行多文档更新。
    
    将所有uid为20120002的文档增加一个属性为sname值为jk:
    > db.a.find()
    { "_id" : ObjectId("500216de81b954b6161a7d8f"), "uid" : "20120002", "type" : "3"
    , "num" : 40, "desc" : "hello world2!" }
    { "_id" : ObjectId("50026affdeb4fa8d154f8572"), "uid" : "20120002", "type" : "1"
    , "num" : 50, "desc" : "hello world1!" }
    
    > db.a.update({"uid":"20120002"},{$set:{"sname":"jk"}},false,true)
    
    > db.a.find()
    { "_id" : ObjectId("500216de81b954b6161a7d8f"), "desc" : "hello world2!", "num"
    : 40, "sname" : "jk", "type" : "3", "uid" : "20120002" }
    { "_id" : ObjectId("50026affdeb4fa8d154f8572"), "desc" : "hello world1!", "num"
    : 50, "sname" : "jk", "type" : "1", "uid" : "20120002" }
    ==========================多个文档更新替换======================
    
    
    */
    ?>
    

      

  • 相关阅读:
    Pandas
    多进程编程
    python的多线程编程
    Scrapy中集成selenium
    生成器函数yield和使用yield模拟协程
    迭代器和可迭代对象
    HDU5988 Coding Contest(浮点费用流)
    codeforces Technocup 2017
    codeforces724E Goods transportation(欧拉回路)
    UVAlive4097 Yungom(思路)
  • 原文地址:https://www.cnblogs.com/xiangxiaodong/p/2820050.html
Copyright © 2011-2022 走看看