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://www.bubuko.com/infodetail-2086470.html