经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MongoDB » 查看文章
MongoDB 简单上手
来源:cnblogs  作者:EnweTu  时间:2018/9/28 16:43:37  对本文有异议

MongoDB 是什么

MongoDB 是一种非关系型数据库(NoSQL)。

MongoDB中的术语解释

  • 文档(document):形如
    {      name: "sue",                    <---- field: value      age: 26,                        <---- field: value      status: "A"                     <---- field: value      groups: [ "news", "sports" ]    <---- field: value   }
    的一条记录,就叫文档。文档由 field and value pairs 组成,与JSON对象相似。

    • 区分大小写

    • field唯一 , 不可重复

    • 文档可嵌套

    • 键值对是有序的

  • 集合:集合就是一组文档

SQL 与 MongoDB 术语比较

SQL术语MongoDB术语解释说明
databasedatabase数据库
tablecollection表、集合
rowdocument记录、文档
columnfield字段、域
indexindex索引
table joins
表连接、MongoDB不支持
primary keyprimary key主键、MongoDB自动将_id字段设置为主键

安装 MongoDB

具体因版本不同,不宜赘述,最好参考官方文档。

连接 MongoDB 数据库

连接数据库前你需要确认:

  • 你已经成功安装MongoDB,并启动了MongoDB服务。

  • 你将MongoDB安装目录下的 bin文件夹路径添加到了环境变量中。

  • 在 cmd 中输入 mongo ,回车。然后就可以看到MongoDB shell 形式的客户端。

MongoDB shell 中使用命令

MongoDB shell 支持JS语法,可直接书写JS语句。

  • show dbs 显示所有数据库

  • use dbname MongoDB 不需要单独的语句创建数据库,
    直接使用就行。若数据库存在,则使用;否则创建之后使用。

  • db 显示当前所在数据库

  1. > stu = {
  2. ... name: 'jhon',
  3. ... age:21}
  4. { "name" : "jhon", "age" : 21 }
  • 通过上述语句可以创建一个stu对象

  1. > db.students.insert(stu)
  2. WriteResult({ "nInserted" : 1 })
  3. > db.students.insert({name: 'Amy'})
  • 这样将对象添加进数据库

查询
  1. > db.students.find()
  2. { "_id" : ObjectId("5ba9dfb9e840eb1e9186871e"), "name" : "jhon", "age" : 21 }
  3. > db.students.findOne()
  4. {
  5.         "_id" : ObjectId("5ba9dfb9e840eb1e9186871e"),
  6.         "name" : "jhon",
  7.         "age" : 21
  8. }

"_id"是MongoDB默认增加的,用来唯一标识一个文档

修改
  • 直接修改,会替换原数据,无法进行单个key-value的更改

  1. > db.students.update({name: 'jhon'},{name: 'jhonc'})
  2. WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
  3. > db.students.findOne()
  4. { "_id" : ObjectId("5ba9dfb9e840eb1e9186871e"), "name" : "jhonc" }
  5. 可以看到 age 属性也没有了。
  • 通过对象修改

  1. > stu_obj = db.students.findOne({name: "Amy2"})
  2. {
  3.         "_id" : ObjectId("5ba9e3eee840eb1e91868720"),
  4.         "name" : "Amy2",
  5.         "age" : 16,
  6.         "sex" : "male"
  7. }
  8. > stu_obj.name = "Jhon2"
  9. Jhon2
  10. > db.students.update({name: "Amy2"}, stu_obj)
  11. WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
  12. > stu_obj = db.students.findOne({name: "Amy2"})
  13. null
  14. > stu_obj = db.students.findOne({name: "Jhon2"})
  15. {
  16.         "_id" : ObjectId("5ba9e3eee840eb1e91868720"),
  17.         "name" : "Jhon2",
  18.         "age" : 16,
  19.         "sex" : "male"
  20. }
删除
  1. > db.students.remove({name: "Jhon2"})
  2. 删除单条
  3. > db.students.remove({ })
  4. 清空

使用Python操作MongoDB数据库

安装 pymongo
  1. from pymongo import MongoClient
  2. import datetime
  3. # 连接数据库
  4. client = MongoClient()  # 会连接到默认地址和端口,即 127.0.0.1:27017
  5. # # 也可以写成这样
  6. # client = MongoClient('localhost', 27017)
  7. # client = MongoClient('mongodb://localhost:27017/')
  8.  
  9. # 创建数据库
  10. db = client.test_database    # 创建名叫 test_database 的数据库
  11. # # db = client['test-database']
  12.  
  13. # 增加文档
  14. # 创建一条文档
  15. post = {"author": "Mike",
  16.         "text": "My first blog post!",
  17.         "tags": ["mongodb", "python", "pymongo"],
  18.         "date": datetime.datetime.utcnow()}
  19. # 将post添加到数据库,并获得"_id"
  20. post_id = db.posts.insert_one(post).inserted_id
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号