MongoDB基础教程系列--第三篇 MongoDB基本操作(二)

https://www.cnblogs.com/liruihuan/p/6661493.html

1、集合操作

1.1、创建集合

MongoDB 用 db.createCollection(name, options) 方法创建集合。

格式

1

db.createCollection(name, options)

其中,name 是集合名称,是一个字符串;options 是可选项,是一个文档,指定内存大小和索引等选项,具体参数说明如下表:

字段类型说明
capped布尔        (可选)如果为 true,表示为固定集合。固定集合是指具有固定存储空间的集合。
当该值为 true 时,必须指定 size 参数。
autoIndexID布尔(可选)如果为 true,在 _id 字段自动创建索引。默认为 false。
size数值(可选)为固定集合指定一个最大值(以字节计)。
如果 capped 为 true,也需要指定该字段。
max数值(可选)为固定集合指定文档的最大数量。

注:1.如果 collection 达到最大存储限制(size)之前达到最大文档数量(max)会删除旧文档。

      2.MongoDB 会先检查size值,然后再检查max值

范例

创建一个集合"user",为字段_id创建索引,最大存储空间是10M,最大文档数量为1000

1

2

3

>db.createCollection("user", { capped : true, autoIndexID : truesize : 10485760, max : 1000 } )

"ok" : 1 }

>

说明

在 MongoDB 中,可以不用createCollection()方法创建集合,是因为在插入文档的时候,会自动创建集合

1

2

3

4

5

6

>db.myCollection.insert({"name" "liruihuan"})

WriteResult({ "nInserted" : 1 })

>show collections             

myCollection

user

>

其中,show collections 表示显示当前操作数据库内的所有集合。

1.2、删除集合

MongoDB 用 db.collection.drop() 删除集合

格式

1

db.COLLECTION_NAME.drop()

如果删除成功返回true,否则,返回false

范例

删除刚才创建的myCollection集合,并显示删除后的集合列表,验证是否删除成功

1

2

3

4

5

>db.myCollection.drop()

true

>show collections

user

>

2、文档操作

2.1、插入文档

MongoDB 用 insert()或者save()向集合中插入文档

格式

1

db.collection.insert(document)

范例

我们向集合"user"中插入{"name":"user1","age":19}文档,插入之前先查询集合"user"中存在的文档,然后再查询插入以后的所有文档,以便确定是否插入成功

1

2

3

4

5

6

7

8

9

10

> db.user.find()

"_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" "liruihuan""age" : 18 }

 

> db.user.insert({"name":"user1","age":19})

WriteResult({ "nInserted" : 1 })    # 插入一条数据

 

> db.user.find()

"_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" "liruihuan""age" : 18 }

"_id" : ObjectId("58e1d2f0bb1bbc3245fa754c"), "name" "user1""age" : 19 }

>

文档查询用 find() 方法,下一篇会具体讲解。

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

2.2、更新文档

MongoDB 用 update() 或者 save() 更新集合中的文档

2.2.1、update() 

update() 更新已经存在文档的值

格式

1

db.COLLECTION_NAME.update(SELECTIOIN_CRITERIA, UPDATED_DATA)

范例

在集合"user"中,将文档原来的name值"user1"更新为"user2",更新之前先查询集合"user"中存在的文档,然后再查询更新以后的所有文档,以便确定是否更新成功

1

2

3

4

5

6

7

8

9

10

> db.user.find()

"_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" "liruihuan""age" : 18 }

"_id" : ObjectId("58e1d2f0bb1bbc3245fa754c"), "name" "user1""age" : 19 }

 

>db.user.update({'name':'user1'},{$set:{'name':'user2'}})

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })   # 输出信息

 

> db.user.find()

"_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" "liruihuan""age" : 18 }

"_id" : ObjectId("58e1d2f0bb1bbc3245fa754c"), "name" "user2""age" : 19 }

上面范例只会更新第一条发现的文档,若想更新全部发现的文档,则需要用 multi:true ,具体写法如下

1

db.user.update({'name':'user1'},{$set:{'name':'user2'}},{multi:true})

上文中用到了更新操作符$set,诸如此类的还有:$inc、$unset、$push、$ne等。感兴趣的伙伴们可以到网上查查具体的含义。

2.2.2、save()

save() 方法通过传入的文档来替换已有文档。

格式

1

db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})

范例

用 _id = '58e1d2f0bb1bbc3245fa754b' 的文档替换原来的文档,更新之前先查询集合"user"中存在的文档,然后再查询更新以后的所有文档,以便确定是否更新成功

1

2

3

4

5

6

7

8

9

10

11

12

> db.user.find()

"_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" "liruihuan""age" : 18 }

 

>db.user.save(

   {

      "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name":"user3""age":20

   }

)

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })   # 输出信息

 

> db.user.find()

"_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" "user3""age" : 20 }

2.3、删除文档

MongoDB 用 remove() 删除集合中的文档

格式

1

db.COLLECTION_NAME.remove(DELLETION_CRITTERIA,justOne)

justOne 如果设为 true 或 1,则只删除一个文档。

范例

删除 name 为 'user1' 的文档,删除之前先查询集合"user"中存在的文档,然后再查询删除以后的所有文档,以便确定是否删除成功

1

2

3

4

5

6

7

8

9

> db.user.find()

"_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" "liruihuan""age" : 18 }

"_id" : ObjectId("58e1d2f0bb1bbc3245fa754c"), "name" "user1""age" : 19 }

"_id" : ObjectId("58e1d2f0bb1bbc3245fa754d"), "name" "user1""age" : 20 }

 

>db.user.remove({"name":"user1"})

WriteResult({ "nRemoved" : 2 })      # 删除了两条数据

 

> db.user.find() <br>{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" "liruihuan""age" : 18 }

如果只想删除一条记录,则需要设置 justOne 为 1,如下所示:

1

db.user.remove({"name":"user1"},1)

如果想删除所有记录,可以这样写

1

db.user.remove({})

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值