资讯专栏INFORMATION COLUMN

mongodb简介

zsirfs / 1294人阅读

摘要:示例给追加别名,用法作用加一个值到数组内,而且只有当这个值在数组中不存在时才增加。示例删除记录内的所有别名可以看到和已经全部被删除了用法作用对字段进行重命名示例把记录的字段重命名为由结果可以看出字段已经被更新为了。

1. 来源

存储方式就是个大json,很灵活。

2. 官网下载安装

https://docs.mongodb.com

3. 启动

</>复制代码

  1. // 指定数据库所在的文件夹
  2. mongod --dbpath d:mongo

保持此状态,新起一个cmd,进行其他操作,如:

</>复制代码

  1. mongo

之后就是mongo的环境,可以敲相关的增删改查。
另外mongo的存储方式是物理可见的,我们可以直接导入一个数据库,使用:

</>复制代码

  1. mongoimport
4. 数据库相关命令

</>复制代码

  1. show dbs:列出所有数据库
  2. use xxx: 使用xxx数据库
  3. db: 查看当前所在的数据库
  4. db.collections.insert({}):往collections中插入对象,如果collections第一次出现则创建collections.
  5. show collections: 显示当前库中所有的collections
  6. db.dropDatabase():删除当前数据库
5. 增

</>复制代码

  1. db.collections.insert({});
  2. // 3.2新api
  3. db.collections.insertOne({});
  4. db.collections.insertMany([]);

导入(报语法错误,不知为什么)

</>复制代码

  1. mongoimport --db test --collection restaurants --drop --file C:UsersAdministratorDesktopaaa.json
6. 查

</>复制代码

  1. // 查询所有
  2. db.collections.find();
  3. // 精确匹配
  4. db.collections.find({name:"michael"});
  5. // 多个条件(与条件)
  6. db.collections.find({name:"michael",age:29});
  7. // 大于
  8. db.collections.find({age:{$gt:29}});
  9. // 或条件
  10. db.collections.find({$or:[{name:"kobe",age:29}]});
  11. // sort:1为升序;-1为降序
  12. db.collections.find().sort({age:1});
  13. // limit
  14. db.collections.find().limit(5);
7. 改

</>复制代码

  1. // 更改某个字段
  2. db.collections.update({name:"kobe"},{$set:{age:19}});
  3. // 完全替换,不使用set
  4. db.collections.update({name:"kobe",{name:"kobe",age:20}});
  5. // 全部替换,以上默认只会替换一个
  6. db.collections.update({age:29},{$set:{age:30}},{multi:true});
8. 删

</>复制代码

  1. // 删除全部数据
  2. db.collections.remove();
  3. // 删除部分数据
  4. db.collections.remove({name:"kobe"});
9. 查询操作符

</>复制代码

  1. 大于 - $gt(greater than)
  2. 小于 - $lt(less than)
  3. 大于等于 - $gte(gt equal)
  4. 小于等于 - $lte(lt equal)
  5. 不等于 $ne (not equal)
10. 更新操作符

1.$inc
用法:{$inc:{field:value}}
作用:对一个数字字段的某个field增加value
示例:将name为chenzhou的学生的age增加5

</>复制代码

  1. > db.students.find()
  2. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou", "age" : 22 }
  3. #查询结果显示年龄为22
  4. > db.students.update({name:"chenzhou"},{$inc:{age:5}})
  5. #执行修改,把age增加5
  6. > db.students.find()
  7. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou", "age" : 27 }
  8. >
  9. #查询结果显示年龄为27,修改成功

2.$set
用法:{$set:{field:value}}
作用:把文档中某个字段field的值设为value
示例: 把chenzhou的年龄设为23岁

</>复制代码

  1. > db.students.find()
  2. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou", "age" : 27 }
  3. > db.students.update({name:"chenzhou"},{$set:{age:23}})
  4. > db.students.find()
  5. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou", "age" : 23 }
  6. >
  7. 从结果可以看到,更新后年龄从27变成了23

3.$unset
用法:{$unset:{field:1}}
作用:删除某个字段field
示例: 将chenzhou的年龄字段删除

</>复制代码

  1. > db.students.find()
  2. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou", "age" : 23 }
  3. > db.students.update({name:"chenzhou"},{$unset:{age:1}})
  4. > db.students.find()
  5. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou" }
  6. >

4.$push
用法:{$push:{field:value}}
作用:把value追加到field里。注:field只能是数组类型,如果field不存在,会自动插入一个数组类型
示例:给chenzhou添加别名"michael"

</>复制代码

  1. > db.students.find()
  2. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou" }
  3. > db.students.update({name:"chenzhou"},{$push:{"ailas":"Michael"}})
  4. > db.students.find()
  5. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "Michael" ], "name" : "chenzhou" }
  6. >
  7. 由结果可以看到,记录中追加了一个数组类型字段alias,且字段有一个为"Michael"的值

5.pushAll
用法:{$pushAll:{field:value_array}}
作用:用法同$push一样,只是$pushAll可以一次追加多个值到一个数组字段内。
示例:给chenzhou追加别名A1,A2

</>复制代码

  1. > db.students.find()
  2. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "Michael" ], "name" : "chenzhou" }
  3. > db.students.update({name:"chenzhou"},{$pushAll:{"ailas":["A1","A2"]}})
  4. > db.students.find()
  5. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "Michael", "A1", "A2" ], "name" : "chenzhou" }
  6. >

6.$addToSet
用法:{$addToSet:{field:value}}
作用:加一个值到数组内,而且只有当这个值在数组中不存在时才增加。
示例:往chenzhou的别名字段里添加两个别名A3、A4

</>复制代码

  1. > db.students.find()
  2. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "Michael", "A1", "A2" ], "name" : "chenzhou" }
  3. > db.students.update({name:"chenzhou"},{$addToSet:{"ailas":["A3","A4"]}})
  4. > db.students.find()
  5. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "Michael", "A1", "A2", [ "A3", "A4" ] ], "name" : "chenzhou" }
  6. >
  7. 由结果可以看出,更新后ailas字段里多了一个对象,这个对象里包含2个数据,分别是A3、A4

7.$pop
用法:删除数组内第一个值:{$pop:{field:-1}}、删除数组内最后一个值:{$pop:{field:1}}
作用:用于删除数组内的一个值
示例: 删除chenzhou记录中alias字段中第一个别名

</>复制代码

  1. > db.students.find()
  2. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "Michael", "A1", "A2", [ "A3", "A4" ] ], "name" : "chenzhou" }
  3. > db.students.update({name:"chenzhou"},{$pop:{"ailas":-1}})
  4. > db.students.find()
  5. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "A1", "A2", [ "A3", "A4" ] ], "name" : "chenzhou" }
  6. >
  7. 由结果可以看书,第一个别名Michael已经被删除了。

我们再使用命令删除最后一个别名:

</>复制代码

  1. > db.students.find()
  2. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "A1", "A2", [ "A3", "A4" ] ], "name" : "chenzhou" }
  3. > db.students.update({name:"chenzhou"},{$pop:{"ailas":1}})
  4. > db.students.find()
  5. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "A1", "A2" ], "name" : "chenzhou" }
  6. >
  7. 由结果可以看出,alias字段中最后一个别名["A3","A4"]被删除了。

8.$pull
用法:{$pull:{field:_value}}
作用:从数组field内删除一个等于_value的值
示例:删除chenzhou记录中的别名A1

</>复制代码

  1. > db.students.find()
  2. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "A1", "A2" ], "name" : "chenzhou" }
  3. > db.students.update({name:"chenzhou"},{$pull:{"ailas":"A1"}})
  4. > db.students.find()
  5. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "A2" ], "name" : "chenzhou" }
  6. >

9.$pullAll
用法:{$pullAll:value_array}
作用:用法同$pull一样,可以一次性删除数组内的多个值。
示例: 删除chenzhou记录内的所有别名

</>复制代码

  1. > db.students.find()
  2. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "A1", "A2" ], "name" : "chenzhou" }
  3. > db.students.update({name:"chenzhou"},{$pullAll:{"ailas":["A1","A2"]}})
  4. > db.students.find()
  5. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ ], "name" : "chenzhou" }
  6. >
  7. 可以看到A1和A2已经全部被删除了

10.$rename
用法:{$rename:{old_field_name:new_field_name}}
作用:对字段进行重命名
示例:把chenzhou记录的name字段重命名为sname

</>复制代码

  1. > db.students.find()
  2. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ ], "name" : "chenzhou" }
  3. > db.students.update({name:"chenzhou"},{$rename:{"name":"sname"}})
  4. > db.students.find()
  5. { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ ], "sname" : "chenzhou" }
  6. >
  7. 由结果可以看出name字段已经被更新为sname了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/19023.html

相关文章

  • (翻译) MongoDB(1) 简介

    摘要:文档数据库在中,一条纪录就是一个文档,它是由字段和值对组成的数据结构。尤其是在数据库系统中,对于嵌入式数据模型的支持减少了活动。它提供自动故障转移数据冗余副本集是一组服务器,保持相同的数据集,提供冗余和提高数据可用性的。 MongoDB 是一个提供了高性能、高可用、自动扩展的开源的文档数据库。 文档数据库 在MongoDB中,一条纪录就是一个文档,它是由字段和值对组成的数据结构。Mon...

    Magicer 评论0 收藏0
  • MongoDB指南---1、MongoDB简介

    摘要:不采用关系模型主要是为了获得更好的扩展性。易于扩展应用程序数据集的大小正在以不可思议的速度增长。过去非常罕见的级别数据,现在已是司空见惯了。这种精简方式的设计是能够实现如此高性能的原因之一。下一篇文章指南基础知识文档集合数据库客户端 下一篇文章:MongoDB指南---2、MongoDB基础知识-文档、集合、数据库、客户端 MongoDB是一款强大、灵活,且易于扩展的通用型数据库。它...

    VPointer 评论0 收藏0
  • MongoDB指南---1、MongoDB简介

    摘要:不采用关系模型主要是为了获得更好的扩展性。易于扩展应用程序数据集的大小正在以不可思议的速度增长。过去非常罕见的级别数据,现在已是司空见惯了。这种精简方式的设计是能够实现如此高性能的原因之一。下一篇文章指南基础知识文档集合数据库客户端 下一篇文章:MongoDB指南---2、MongoDB基础知识-文档、集合、数据库、客户端 MongoDB是一款强大、灵活,且易于扩展的通用型数据库。它...

    guyan0319 评论0 收藏0
  • mongoDB 安装简介

    摘要:把命令所在文件夹添加到全局变量,如果一般只用同一个账户,所以添加到当前用户的全局变量即可。在中添加命令修改后,重新加载配置文件同样到官网下载最新文件,按照步骤安装完成后,把安装目录中的目录添加到环境变量中,即可在命令提示符中使用相关命令。 Linux 到 mongoDB 官网找到最新压缩包链接,利用 Linux 下载工具获取安装包: wget https://fastdl.mongod...

    xavier 评论0 收藏0
  • MongoDB第一发:简介,CRUD,设计。(上)

    摘要:学习已经有三周了,是时候来一发学习总结啦。相关简介是非关系型的数据库。简单在于,所有的都由大括号,中括号,以及对构成。不同于,它是同步的。 学习mongoDB已经有三周了,是时候来一发学习总结啦。以下是个人学习心得总结,非官方,可能有纰漏和不准确之处,欢迎指正。 相关简介 1.mongoDB是非关系型(nosql)的数据库。 2.mongoDB是无模式(schemaless)的数...

    leo108 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<