码迷,mamicode.com
首页 > 数据库 > 详细

MongoDB(2): 增删改操作

时间:2017-05-24 22:47:01      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:db   nosql   mongo   增删改   curd   

附加命令:

1、进入前端操作命令

./mongo [ip:端口]

说明:默认会自动选本地,端口27017

2、显示所有的库

> show dbs;   或者 show databases;

3、选择库

> use 库名;

4、显示库所有的集合

> show collections;  或者 show tables;

5、显示当前使用的库

> db;

一、操作数据库、文档

1.1、数据库操作

1、创建数据库:MongoDB没有专门创建数据库的语句,可以使用“use” 来使用某个数据库,如果要使用

的数据库不存在,那么将会创建一个,会在真正向该库加入文档后,保存成为文件。

> use db_test;

2、删除数据库,命令:db.dropDatabase(),注意先要进入到需删除的库

> use db_test;
switched to db db_test
> db.dropDatabase();
{ "ok" : 1 }
>

1.2、集合操作

1、创建集合:在MongoDB中不用创建集合,因为没有固定的结构,直接使用db.集合名称.命令 来操作就可以了。如果非要显示创建集合的话,用:db.createCollecion(“集合名称”);

2、删除集合,命令:dorp

> db.test1.drop();

1.3、查看集合的状态信息

db.集合名.stats();

二、增删改

2.1、添加

db.集合名称.insert(数据);

> db.test1.insert({"username":"zhangsan",age:2});

技术分享

insert方法,可以单独插入一个文档,也可以插入多个,用“[ ]”即可。注意:

  1:MongoDB会为每个没有“_id”字段的文档自动添加一个”_id”字段

  2:每个Doc必须小于16MB

  3:可以在shell中执行Object.bsonsize(文档名称);来查看size大小

    技术分享

2.2、删除

命令:remove,可以按条件来删除

只是删除文档,集合还在,如果使用 drop命令,会连带集合和索引都删掉

> db.test1.remove({age:2});

注意:如果使用remove没有带条件,则会删除此集合中所有的文档。

2.3、更新

db.集合名称. update(条件,新的文档);

> db.test1.update({"userId":"1"},{"userId":"1","username":"zhangsan","age":10});

技术分享

问题:

  1、这里如果有多个文档匹配,只会更新第一个文档。

  2、这个修改的是整个文档

解决:

  使用修改器


更新修改器,用来做复杂的更新操作

1:$set :指定一个字段的值,如果字段不存在,会创建一个

> db.test1.update({"userId":"1"},{"$set":{"username":"zhangsan"}},0,1);

说明:如果userId为1,则更新其username为zhangsan

技术分享

> db.test1.update({"userId":"1"},{$set:{"score.1":7}});

说明:更新数组score的索引为1的值为7,索引从0开始。

2:$unset :删掉某个字段

> db.test1.update({"userId":"1"},{"$unset":{"username":1}},0,1);

3:$inc :用来增加已有键的值,如果字段不存在,会创建一个。只能用于整型、长整型、或双精度浮点型的值。

> db.test1.update({"userId":"1"},{"$inc":{"age":3}},0,1);

说明:如果userId为1,则将其age的值增加3

4:$push:向已有数组的末尾加入一个元素,要是没有就新建一个数组

> db.test1.update({"userId":"1"},{"$push":{"score":1}},0,1);

技术分享

5:$each:通过一次$push来操作多个值

> db.test1.update({"userId":"1"},{"$push":{"score":{$each:[4,5,6]}}},0,1);

技术分享

6:$slice:限制数组只包含最后加入的n个元素,其值必须是负整数

> db.test1.update({"userId":"1"},{"$push":{"score":{$each:[7,8,9],$slice:-5}}});

技术分享

7:$sort:对数组中的元素,按照指定的字段来对数据进行排序(1为升序,-1为降序),然后再按照slice删除。

注意:不能只将$slice或者$sort与$push配合使用,且必须使用$each

> db.test1.update({"userId":"1"},{"$push":{"score":{$each:[1,2,3],$slice:-5,$sort:-1}}});

技术分享

8:$ne:判断一个值是否在数组中,如果不在则添加进去

> db.test1.update({"userId":"1","score":{$ne:4}},{$push:{"score":4}});

技术分享

9:$addToSet:将数组作为数据集使用,以保证数组内的元素不会重复

> db.test1.update({"userId":"1"},{$addToSet:{"score":8}});

10:$pop :从数组一端删除元素,{$pop:{key:1}},从末尾删掉一个,-1则从头部删除

> db.test1.update({"userId":"1"},{$pop:{score:1}});

11:$pull:按照条件来删除所有匹配的元素

> db.test1.update({"userId":"1"},{$pull:{score:7}});

12:$:用来修改第一个匹配的元素

> db.test1.update({"score.0":5},{$set:{"score.$":7}});

说明:如果score的第0个索引值为5,则更新score的第0个索引值为7

























































本文出自 “我爱大金子” 博客,请务必保留此出处http://1754966750.blog.51cto.com/7455444/1929096

MongoDB(2): 增删改操作

标签:db   nosql   mongo   增删改   curd   

原文地址:http://1754966750.blog.51cto.com/7455444/1929096

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!