美文网首页
Mongodb 学习笔记(二)

Mongodb 学习笔记(二)

作者: 我的小鱼干去哪儿了 | 来源:发表于2019-01-03 22:04 被阅读0次

    日常的增删查改

    1. 增: insert

    介绍: mongodb 存储的是文档,文档是json格式的对象。
    语法:

    db.collectionName.insert(document);
    db.stu.insert([{_id:4,sn:'004', name:'xiaowang'}, {_id:5,sn:'005', name:"xiaoxiao"}])
    
    

    2. 删: remove

    语法: db.collectionName.remove(查询表达式,选项)
    选项是指 {justOne:true/false}, 是否只删除一行,默认为false

    例1:属性为name的document将被删掉:

    db.collectionName.remove({name:'001'})
    

    例2:collectionName中age为23的documents中将被删掉一个

    db.collectionName.remove({age:23}, true)
    

    注意:

    • 查询表达式依然是个json对象
    • 查询表达式匹配的行将被删掉
    • 如果不写查询表达式,collection中的所有文档都将被删掉

    3. 查: find, findOne

    语法: db.collection.find(查询表达式,查询的列)

    db.collectionName.find(表达式, {列1:1, 列2:1})

    例: 查询指定collection中的所有文档 所有内容

     db.stu.find()
    

    例: 只查询name列(_id属性总是默认查出来)

     db.stu.find({}, {name:1})
    

    例: 查询所有gender为male的文档的name列(_id属性总是默认查出来)

     db.stu.find({gender:'male'}, {name:1})
    

    例: 只查询name列, 但是不查询id列

     db.stu.find({}, {name:1, _id:0})
    

    4. 改: update

    改谁? -- 查询表达式
    改成什么样? -- 新值 或 赋值表达式

    语法: db.collectionName.update(查询表达式, 新值,选项)

    例: 如下是指 选中news中name为QQ的文档,并把其文档值改为{name:'MSN'}

    db.news.update({name:'QQ'}, {name:'MSN'})
    

    结果: 文档中的其他列也不见了,改后只有_id 和name列了。即新文档值直接替换了旧文档而不是修改。

    如果想修改文档的某列,可以使用$set关键字:

    db.news.update({name:'QQ'}, {$set:{name:'MSN'}})
    

    修改时的赋值表达式:

    $set: 修改某列的值 或者 新增某列
    $unset: 删除某列
    $rename: 重命名某个列
    $inc: 某个列的值
    $setOnInsert: 当upsert为true时,并且发生了insert操作时,可以补充的字段
    
    image.png

    Option的作用:
    {upsert:true/false,multi:true/false}

    • Upsert: 是指没有匹配的行则直接插入该行(和mysql中的replace一样), 默认为true, 不存在直接插入

    例: 没有_id = 99的文档被修改,则直接插入该文档

    db.news.update({_id, 99}, {x:123,y:1234}, {upsert:true})
    
    • Multi: 是指修改多行(即使查询表达式能够匹配都行,默认也只改一行, 如果想改多行,则设置该选项为true)
      例:
    image.png

    相关文章

      网友评论

          本文标题:Mongodb 学习笔记(二)

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