首页 文章资讯内容详情

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

2026-05-31 4 花语

本文内容纲要:

-1、集合操作 -2、文档操作

返回目录

1、集合操作

1.1、创建集合

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

格式

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

>db.createCollection("user",{capped:true,autoIndexId:true,size:10485760,max:1000}) {"ok":1} >

说明

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

>db.myCollection.insert({"name":"liruihuan"}) WriteResult({"nInserted":1}) >showcollections myCollection user >

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

1.2、删除集合

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

格式

db.COLLECTION_NAME.drop()

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

范例

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

>db.myCollection.drop() true >showcollections user >

2、文档操作

2.1、插入文档

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

格式

db.collection.insert(document)

范例

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

>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()更新已经存在文档的值

格式

db.COLLECTION_NAME.update(SELECTIOIN_CRITERIA,UPDATED_DATA)

范例

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

>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,具体写法如下

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

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

2.2.2、save()

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

格式

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

范例

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

>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()删除集合中的文档

格式

db.COLLECTION_NAME.remove(DELLETION_CRITTERIA,justOne)

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

范例

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

>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() {"_id":ObjectId("58e1d2f0bb1bbc3245fa754b"),"name":"liruihuan","age":18}

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

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

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

db.user.remove({})

业精于勤,荒于嬉;行成于思,毁于随。

如果你觉得这篇文章不错或者对你有所帮助,可以通过右侧【打赏】功能,给予博主一点点鼓励和支持

本文内容总结:1、集合操作,2、文档操作,

原文链接:https://www.cnblogs.com/liruihuan/p/6661493.html