设为首页 收藏本站
查看: 1204|回复: 0

[经验分享] MongoDB基础教程系列

[复制链接]

尚未签到

发表于 2017-12-14 20:17:07 | 显示全部楼层 |阅读模式
  返回目录

1、集合操作
  1.1、创建集合
  MongoDB 用 db.createCollection(name, options) 方法创建集合。
  格式
  

db.createCollection(name, options)  

  

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

字段类型说明capped
布尔        
(可选)如果为 true,表示为固定集合。固定集合是指具有固定存储空间的集合。  当该值为 true 时,必须指定>

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,>
{ "ok" : 1 }  
>
  

  

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

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

  

  其中,show collections 表示显示当前操作数据库内的所有集合。
  1.2、删除集合
  MongoDB 用 db.collection.drop() 删除集合
  格式
  

db.COLLECTION_NAME.drop()  

  

  如果删除成功返回true,否则,返回false
  范例
  删除刚才创建的myCollection集合,并显示删除后的集合列表,验证是否删除成功
  

>db.myCollection.drop()  
true
  
>show collections
  
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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-424149-1-1.html 上篇帖子: mongoDB & Nodejs 访问mongoDB (二) 下篇帖子: 【MongoDB】3.详细命令集合
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表