zoukankan      html  css  js  c++  java
  • MongoDB学习笔记(二) 增删改查

    1、基本概念

    由于 MongoDB 和我们常用的关系型数据库也有一定的联系,这里先给大家说一下,便于 类比学习

    关系型数据库 MongoDB
    数据库 数据库
    集合
    文档
    字段

    (1)数据库

    MongoDB 的单个实例可以容纳多个独立的数据库,不同的数据库放置在不同的文件中

    (2)集合

    集合是 MongoDB 文档的集合,类似于关系型数据库中表的概念

    集合没有固定的结构,可以在集合中插入不同格式和类型的数据,但是通常情况下这些数据都有一定的关联性

    (3)文档

    文档是一组键值对,类似于关系型数据库中行的概念,其数据结构与 JSON 基本一样,称为 BSON

    文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,但是文档中的键值对必须是有序的

    2、数据库操作

    MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将默认存放在 test 数据库中

    (1)创建数据库

    use DATABASE_NAME
    

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

    例如,以下的命令将会创建 myDB 数据库:

    > use myDB
    switched to db myDB
    

    (2)查看已有数据库

    > show dbs
    admin   0.000GB
    config  0.000GB
    local   0.000GB
    

    注意:刚刚创建的数据库并不会出现在数据库列表中,只有向新创建的数据库中插入数据后,才会显示

    (3)查看当前数据库

    > db
    myDB
    

    (4)删除当前数据库

    > db.dropDatabase()
    { "ok" : 1 }
    

    3、集合操作

    (1)创建集合

    db.createCollection(
        COLLECTION_NAME,
    	{
        	capped: <boolean>,		// 可选,若为 true,则创建固定集合,且此时必须要指定 size 参数
        	autoIndexId: <boolean>,	// 可选,若为 true,则自动在 `_id` 字段创建索引
        	size: <number>,			// 可选,为固定集合指定可以使用的最大空间(以字节计)
        	max: <number>			// 可选,为固定集合指定包含文档的最大数量
        }
    )
    

    注意:在 MongoDB 中,创建集合之后要再插入文档,集合才会真正创建

    例如,以下的命令将会在 myDB 数据库中创建 myCol 集合:

    > use myDB
    switched to db test
    > db.createCollection("myCol")
    { "ok" : 1 }
    

    (2)查看已有集合

    > show collections
    myCol
    

    (3)删除集合

    db.COLLECTION_NAME.drop()
    

    例如,以下的命令将会删除 myDB 数据库中的 myCol 集合:

    > db.myCol.drop()
    true
    

    4、文档操作

    (1)插入文档

    db.COLLECTION_NAME.insert(document)
    

    注意:如果集合不在数据库中, MongoDB 将会自动创建该集合并插入文档

    例如,以下的命令将会向 myDB 数据库中的 myCol 集合插入文档:

    > use myDB
    switched to db myDB
    > db.myCol.insert({"name":"MongoDB"})
    WriteResult({ "nInserted" : 1 })
    

    (2)查询文档

    db.COLLECTION_NAME.find(
    	query,		// 可选,指定查询文档的条件
    	projection	// 可选,使用投影操作指定返回的键,默认省略,表示返回文档中所有的键
    )
    

    常见的查询条件如下:

    描述 操作符 格式
    等于 {<key>:<value>}
    不等于 $ne {<key>:{$ne:<value>}}
    小于 $lt {<key>:{$lt:<value>}}
    小于等于 $lte {<key>:{$lte:<value>}}
    大于 $gt {<key>:{$gt:<value>}}
    大于等于 $gte {<key>:{$gte:<value>}}
    AND 条件 {<key1>:<value1>,<key2>:<value2>}
    OR 条件 $or {$or:[{<key1>:<value1>},{<key2>:<value2>}]}

    例如,以下的命令将会查询 name 字段等于 MongoDB 的文档:

    > db.myCol.find({"name":"MongoDB"})
    { "_id" : ObjectId("5c7c069826cb01475e68f64e"), "name" : "MongoDB" }
    

    (3)更新文档

    db.COLLECTION_NAME.update(
        query,		// 指定被更新的对象
        update,		// 指定更新对象
        {
            upsert: <boolean>,	// 可选,指定如果不存在被更新的对象时是否插入更新对象,默认为 false
            multi: <boolean>,	// 可选,若为 true,则更新所有符合条件的记录,默认为 false
            writeConcern: <document>	// 可选,指定抛出异常的级别
        }
    )
    

    例如,以下的命令将会更新 myDB 数据库中的 myCol 集合中的数据字段 name:

    > db.myCol.update({"name":"MongoDB"},{$set:{"name":"MySQL"}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    

    (4)删除文档

    db.COLLECTION_NAME.remove(
        query,	// 指定被删除的对象
        {
            justOne: <boolean>,			// 可选,若为 true,则只删除一个文档,默认为 false
            writeConcern: <document>	// 可选,定义抛出异常的级别
        }
    )
    

    例如,以下的命令将会删除 myDB 数据库中的 myCol 集合中的 name 字段等于 MySQL 的文档:

    > db.myCol.remove({"name":"MySQL"})
    WriteResult({ "nRemoved" : 1 })
    

    【 阅读更多 MongoDB 系列文章,请看 MongoDB学习笔记

    版权声明:本博客属于个人维护博客,未经博主允许不得转载其中文章。
  • 相关阅读:
    应用程序初次运行数据库配置小程序(Java版)
    (转) 移动站适配rel=alternate PC页和H5页适配标注
    (转)微信收货地址开发分享
    (转)PHP EOF(heredoc)的使用方法
    http-equiv是什么意思(转载)
    jQuery Ajax 实例 ($.ajax、$.post、$.get)
    JSON转string、JSON转Object
    php使用curl来获取远程图片
    include和require的区别
    (转)PHP获取随机数
  • 原文地址:https://www.cnblogs.com/wsmrzx/p/11564282.html
Copyright © 2011-2022 走看看