欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MongoDB 简单上手

程序员文章站 2022-06-29 10:35:44
MongoDB 是什么 MongoDB 是一种非关系型数据库(NoSQL)。 MongoDB中的术语解释 文档(document):形如 { name: "sue", 区分大小写 field唯一 , 不可重复 文档可嵌套 键值对是有序的 集合:集合就是一组文档 SQL 与 MongoDB 术语比较 ......

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术语 解释说明
database database 数据库
table collection 表、集合
row document 记录、文档
column field 字段、域
index index 索引
table joins 表连接、mongodb不支持
primary key primary 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 显示当前所在数据库

> stu = {
... name: 'jhon',
... age:21}
{ "name" : "jhon", "age" : 21 }
  • 通过上述语句可以创建一个stu对象
> db.students.insert(stu)
writeresult({ "ninserted" : 1 })
> db.students.insert({name: 'amy'})
  • 这样将对象添加进数据库
查询
> db.students.find()
{ "_id" : objectid("5ba9dfb9e840eb1e9186871e"), "name" : "jhon", "age" : 21 }
> db.students.findone()
{
        "_id" : objectid("5ba9dfb9e840eb1e9186871e"),
        "name" : "jhon",
        "age" : 21
}

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

修改
  • 直接修改,会替换原数据,无法进行单个key-value的更改
> db.students.update({name: 'jhon'},{name: 'jhonc'})
writeresult({ "nmatched" : 1, "nupserted" : 0, "nmodified" : 1 })
> db.students.findone()
{ "_id" : objectid("5ba9dfb9e840eb1e9186871e"), "name" : "jhonc" }
可以看到 age 属性也没有了。
  • 通过对象修改
> stu_obj = db.students.findone({name: "amy2"})
{
        "_id" : objectid("5ba9e3eee840eb1e91868720"),
        "name" : "amy2",
        "age" : 16,
        "sex" : "male"
}
> stu_obj.name = "jhon2"
jhon2
> db.students.update({name: "amy2"}, stu_obj)
writeresult({ "nmatched" : 1, "nupserted" : 0, "nmodified" : 1 })
> stu_obj = db.students.findone({name: "amy2"})
null
> stu_obj = db.students.findone({name: "jhon2"})
{
        "_id" : objectid("5ba9e3eee840eb1e91868720"),
        "name" : "jhon2",
        "age" : 16,
        "sex" : "male"
}
删除
> db.students.remove({name: "jhon2"})
删除单条
> db.students.remove({ })
清空

使用python操作mongodb数据库

安装 pymongo
from pymongo import mongoclient
import datetime
# 连接数据库
client = mongoclient()  # 会连接到默认地址和端口,即 127.0.0.1:27017
# # 也可以写成这样
# client = mongoclient('localhost', 27017)
# client = mongoclient('mongodb://localhost:27017/')

# 创建数据库
db = client.test_database    # 创建名叫 test_database 的数据库
# # db = client['test-database']

# 增加文档
# 创建一条文档
post = {"author": "mike",
        "text": "my first blog post!",
        "tags": ["mongodb", "python", "pymongo"],
        "date": datetime.datetime.utcnow()}
# 将post添加到数据库,并获得"_id"
post_id = db.posts.insert_one(post).inserted_id