MongoDB学习笔记(二) 增删改查

mac2022-06-30  24

1、基本概念

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

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

(1)数据库

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

(2)集合

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

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

(3)文档

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

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

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学习笔记 】

转载于:https://www.cnblogs.com/wsmrzx/p/11564282.html

最新回复(0)