美文网首页我爱编程
day7--数据库mongodb

day7--数据库mongodb

作者: 3feeb4458361 | 来源:发表于2016-08-13 10:02 被阅读0次

    笔记

    mongodb语法

    1. 创建数据库
    use DATA_NAME
    

    如果数据库不存在,则创建数据库,否则切换到指定数据库。

    1. 查看数据库
    show dbs
    
    1. 删除数据库
    db.dropDatabase()
    

    删除当前数据库,默认在test中,可以用db查看后,再用use切换到要删除的数据库。

    1. 删除集合
    db.collection.drop()
    
    1. 插入文档
    db.COLLECTION_NAME.insert(document)
    

    例子:向某数据库的col集合插入文档

    >db.col.insert({
        title: 'MongoDB 教程',
        likes: 100
    })
    

    注意:执行insert操作,如果col集合不在该数据库中,mongodb会自动创建。
    也可以将数据定义为一个变量
    如:

    >document=({title: 'MongoDB 教程', likes: 100});
      {
        title: 'MongoDB 教程',
        likes: 100
      }
    

    然后执行插入操作:

    >db.col.insert(document)
    WriteResult({ "nInserted" : 1 })
    

    插入文档也可以使用db.col.save(document)命令。如果不指定_id字段save()方法类似于insert()方法。如果指定_id字段,则会更新该_id的数据。

    1. 查看已插入的文档
    >db.col.find()
    {
     "_id" : ObjectId("56064886ade2f21f36b03134"),
      title: 'MongoDB 教程',
      likes: 100
     }
    
    1. 更新修改已存在的文档。update()方法。语法格式如下:
    db.collection.update(
      <query>,
      <update>,
      {
        upsert:<boolean>,
        multi:<boolean>,
        writeConcern:<document>
      }
    )
    

    参数说明:

    • query:update的查询条件,类似sql update查询内where后面的。
    • update: update的对象和一些更新的操作符(如$,$inc,$set)等,也可以理解为sql update查询内set后面的
    • upsert: 可选,意思是如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
    • multi:可选,默认是false,意为只更新找到的第一条记录,true的意思是把符合条件的全部更新。
    • writeConcern:可选,抛出异常的级别。(??)

    例子:
    在col中插入数据

    >db.col.insert({
      title:"mongodb教程",
      likes:100
    })
    

    接着我们通过update()方法更新标题(title):

    >db.col.update({'title':'mongodb教程'},{$set:{'title':'mongodb'}})
    WriteResult({"nMatched":1,"nUpserted":0,"nModified":1})
    >db.col.find().pretty() #格式化find()的输出
    {
      "_id":ObjectId("56064f89ade2f21f36b03136"),
      "title":"mongodb",
      "likes":100
    }
    

    以上语句只会修改第一条发现的文档,如果你要修改多条相同的文档,则需要设置 multi 参数为 true。

    >db.col.update({'title':'mongodb教程'},{$set:{'title':'mongodb'}},{multi:true})
    
    1. 替换文档,save()方法.语法格式如下:
    db.collection.save(
      <document>,
      {
        writeConcern:<document>
      }
    )
    

    参数说明:

    • document:文档数据
    • writeConcern:可选,抛出异常的级别。(??)

    例子:
    替换_id为56064f89ade2f21f36b03136 的文档数据:

    >db.col.save({
      "_id":ObjectId("56064f89ade2f21f36b03136"),
      "title" : "MongoDB",
      "likes" : 110
    })
    

    替换成功后,我们可以通过find()来看看:

    >db.col.find().pretty()
    {
      "_id" : ObjectId("56064f89ade2f21f36b03136"),
      "title" : "MongoDB",
      "likes" : 110
    }
    
    1. 删除文档remove()方法。语法格式如下:
    db.collection.remove(
      <query>,
      <justOne>
    )
    

    2.6 版本以后的,语法格式如下:

    db.collection.remove(
      <query>, 
      { 
        justOne: <boolean>,
        writeConcern: <document>
      }
    )
    

    参数说明:

    • query:(可选)删除的文档条件
    • justOne:(可选)如果设置true或1,则只删除一个文档
    • writeConcern :(可选)抛出异常的级别
    1. 查询文档find()方法
    >db.COLLECTION_NAME.find()
    

    格式化显示文档:

    >db.col.find().pretty()
    

    条件查询

    操作 格式 范例 RDBMS中的类似语句
    等于 {<key>:<value>} db.col.find({"by":"教程"}) where by="教程"
    小于 {<key>:{$lt:<value>}} db.col.find({"likes":{$lt:50}}) where likes<50
    小于或等于 {<key>:{$lte:<value>}} db.col.find({"likes":{$lte:50}}) where likes<=50
    大于 {<key>:{$gt:<value>}} db.col.find({"likes":{$gt:50}}) where likes>50
    大于或等于 {<key>:{$gte:<value>}} db.col.find({"likes":{$gte:50}}) where likes>=50
    不等于 {<key>:{$ne:<value>}} db.col.find({"likes":{$ne:50}}) where likes!=50

    AND条件,find()方法可以传入多个键,以逗号隔开,即SQL中的AND条件,格式如下:

    >db.col.find({key1:value1,key2:value2})
    

    类似于WHERE语句:WHERE by='教程' AND title='mongoDB'
    OR条件,格式如下:

    >db.col.find(
      {
        $or:[
          {key1:value1},{key2:value2}
        ]
      }
    )
    

    AND和OR联合使用
    类似常规SQL语句:where likes>50 AND (by = '教程' OR title = 'mongodb')

    >db.col.find({"likes":{$gt:50},$or:[{"by":"教程"},{"title":mongodb}]})
    
    1. 匹配类型返回结果,$type操作符
      如果想获得"col"集合中title为String的数据,可以使用如下命令:
    >db.col.find({"title":{$type:2}})
    
    1. 读取指定数量的数据记录limit()方法,语法如下:
    >db.COLLECTION_NAME.find().limit(NUMBER)
    

    注:如果没有指定limit()方法中的参数则显示集合中的所有数据。

    1. 跳过指定数量的记录条数skip()方法,语法如下:
    >db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
    
    1. 排序,sort()方法,参数1为升序,-1位降序,默认为1。语法如下:
    >db.COLLECTION_NAME.find().sort({KEY:1})
    
    1. 索引,ensureIndex()方法,基本格式如下:
    >db.COLLECTION_NAME.ensureIndex({KEY:1})
    

    参数中 Key 值为你要创建的索引字段,1为指定按升序创建索引,如果你想按降序来创建索引指定为-1即可。
    也可以使用多个字段创建索引(关系型数据库中成为复合索引)。

    >db.col.ensureIndex("title":1,"description":-1)
    

    相关文章

      网友评论

        本文标题:day7--数据库mongodb

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