zoukankan      html  css  js  c++  java
  • mongodb数据库的常规操作命令

    Mongodb 命令
    设置数据库存储位置
    mongodb --dbpath 目录

    e.g. 将存储路径设置为dbs
    mongodb --dbpath dbs

    设置数据库监听端口
    mongod --port 8080
    * 默认监听端口27017

    一,数据库的操作

    1,数据库的创建
    use database

    e.g.创建一个名字为stu的数据库
    *use 实际为选择使用哪个数据库,当数据库不存在时会自动创建
    *use后不会立即创建出数据库,而是需要等待插入数据时数据库才会创建

    2,查看系统中的数据库

    show dbs

    系统数据库说明
    admin:存储用户信息
    local:存储本地数据
    config:存储分片信息

    3,删除数据库
    db.dropDatabase()
    删除db所代表的数据库(删除现在所在的库),

    二,集合的操作

    1,创建集合

    方法1
    db.createCollection(collection_name)

    e.g. 创建class1集合
    db.createCollection("class1")

    方法2
    当向一个集合中插入数据的时候如果集合不存在则自动创建
    db.collection_name.insert(..)

    2,查看数据库中的集合
    show collections
    show tables

    集合命名规则
    1,合法的UTF-8字符
    2,不能有‘’
    3,不能以system.开头,因为这是系统保留集合前缀
    4,不能和关键字重名,

    3,删除集合

    db.collection.drop()
    删除class2 集合
    db.class2.drop(),

    4,集合的重命名

    db.collection.renameCollection('new name')

    e.g. 将class集合重命名为class0
    db.class.renameCollection('new name')

    3,文档操作
    mongodb中数据的组织形式---》文档
    mongodb 文档:是以键值对的形式组成的一组数据。类似python
    中字典描述数据的方式

    键:即文档的域,表达了一个键值对的含义

    键的命名规则
    1,utf8格式字符串
    2,不能使用‘’
    3,一个文档中的键不能重复

    1,插入文档
    db.collection.insert()
    功能:插入一个文档
    参数:要插入的文档

    (1)插入单个文档

    e.g.
    db.class0.insert({'name':'Lucy','age':18,'sex':'w'})

    *插入操作中键可以不加引号
    *插看插入结果 db.class0.find()
    *_id 值可以自己插入,但是不能重复

    (2)插入多条文档
    e.g.
    db.class0.insert([{name:'Alex',age:19,sex:'m'},{name:'Abby',age:18,sex:'w'}])

    db.class0.insertmany([{'name':'john',age:16,sex:'m'},{name:'lenzer',age:17,sex:'m'}])

    (3)save插入文档
    db.collection.save()

    如果正常插入与insert用法相同
    db.class0.save([{name:'Sunny',age:17,sex:'W'},{name:'Alice',age:16,sex:'w'}])

    如果插入数据是由_id域,且_id域存在时刻则会修改原有文档,如果该值不存在则正常输入
    db.class0.save({_id:2,name:'Mary',age:20,sex:'w'})

    获取集合对象方法
    db.class0----->db.getCollecton('class0')
    e.g.
    db.getCollection('class0').find() = db.class0.find()

    2,查找操作
    mysql:select * from 表名 where 子句

    mongo :db.collection.find(query,field)

    查找所有内容
    db.collection.find()-->select * from table

    find(query,field)
    功能:查找文档
    参数:query 查找条件,相当于where子句
    field 查找的域
    返回值:查找到的所有文档

    query:以键值对方式传递参数,如果是空{}表示查找所有内容

    field:以键值对的方式给出要查找(不查找)的域,以域名为键
    以0,1为值分别表示不查找和查找


    *设置某一个或多个域设置为0 表示这些域不查找,其他域均
    查找
    *如果某一个或多个域设置为1 表示这些域查找,其他域均
    不查找
    *_id除非设置为0 否则均会查找
    *除了_id域其他域不能有的设置1有的设置0

    e.g .查找结果只有name域
    db.class0.find({sex:'w'},{_id:0,name:1})

    findOne(query,field)
    功能:查找第一条符合的文档
    参数:同find
    返回值:返回查找到的文档

    pretty()
    格式化显示查询结果
    db.class1.find().pretty()

    limit(n)
    功能:显示前n条结果

    db.class0.find({},{_id:0}).limit(3)

    skip(n)
    功能:跳过前n条显示后面的查询结果

    count()
    统计查询结果数量
    *在统计数量是要给出一定的query条件
    统计性别为w的文档个数
    db.class0.find({sex:'w'},{_id:0}).count()

    sort({field:1/-1})
    功能:对查找结果排序
    参数:以键值对表示按照那个field排序
    1,表示升序-1表示降序
    查询按照降序排序
    db.class0.find({age:{$gt:18}},{_id:0}).sort({age:-1})
    按照年龄降序排序,当年龄相同时按名字升序排序
    db.class0.find({age:{$gt:18}},{_id:0}).sort({age:-1,name:1})

    db.class0.find({age:{$gt:18}},{_id:0}).sort({age:-1,name:1}).limit(3)

    3,删除文档
    mysql:delete from table where
    alter table
    mongodb:db.collection.remove(query,justone)

    remove(query,justone)
    功能:删除文档
    参数:query 用法同find
    justone 布尔值 默认为false表示删除所有的符合条件的
    文档,设置为True则表示值删除一条
    删除所有不存在sex域的文档
    db.class1.remove({sex:{$exists:false}})
    删除第一条性别为'w'的文档
    db.class1.remove({sex:'w'},true)
    删除集合中所有文档
    db.class1.remove({})

    4,修改文档
    mysql:update table set...where..
    mongodb:db.collection.update(query,update,upset.multi)


    update(query,update,upset.multi)
    功能:修改文档
    参数: query 筛选条件 用法同find
    update 要修改成什么内容,通常配合修改操作符
    (修改器)使用
    upsert 布尔值,默认是false,如果query没有
    筛选到文档则不作任何操作
    如果设置为True 则如果query没有筛选到匹配
    文档则根据query和update内容插入到新文档
    multi 布尔值,默认false,表示如果有多条符合条件
    文档则只修改一个
    如果为True 则表示修改所有符合条件
    将年龄修改为18
    db.class0.update({name:'Tom'},{$set:{age:18}})

    将第三个参数为True时,当文档名不存在会添加一个文档
    db.class0.update({name:'Tom'},{$set:{age:18}},true)
    修改所有年龄小于17的都改成18岁
    db.class0.update({age:{$lt:17}},{$set:{age:18}},false,true)

  • 相关阅读:
    写了一个分页控件。
    职业规划
    程序员该做的事
    做就做最优秀的员工
    Tomcat+JSP经典配置实例
    2005年11月26日8点50左右,南昌地震。
    如何添加一个自定义的columnstyles 到设计器中,以便在设计时直接使用他们?
    Oracle 的入门心得【强烈推荐】
    如何随机显示记录条数的15% ?
    重写DataGrid的DataGridBoolColumn,添加bool值改变事件。
  • 原文地址:https://www.cnblogs.com/xinin0909/p/10009487.html
Copyright © 2011-2022 走看看