简介
- MongoDB 是一个非关系型数据库
- 非常适合超大数据集的存储,由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案
- MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的
- 对比 SQL
SQL Mongodb 表(Talbe) 集合(Collection) 行(Row) 文档(Document) 列(Col) 字段(Field) 主键(Primary Key) 对象ID(ObjectId)
安装
- 官网下载 MongoDB 的安装包
基操
- 直接在命令行进入客户端
mongo show dbs; #显示所有数据库 show databases; #显示所有数据库 use xxxx; #使用指定数据库/创建数据库(新库中插入数据才可以显示新库) db; #当前正在使用的数据库 db.dropDatabase(); #删除当前数据库 show collections; #显示当前数据库中所有的集合(表) - 常见数据类型,文档用的多一些(字典);文档内各元素无序
Object ID: 主键ID【"_id" : ObjectId("56063f17ade2f21f36b03133")】 String: 字符串 Boolean: 布尔值 Integer: 数字 Doube: 小数 Arrays: 数组,[1,2,3] Object: 文档(关联其他对象) {sname: 李嘉诚, sage: 18, class:{cccc}} Null : 空值 Timestamp: 时间戳 Date: 时间日期 - 插入数据;按照插入顺序排序
# 如果集合不存在. 则会自动创建集合 db.c1.insert({name:"bobo", age:18, hobby:['eat', 'sleep']}) # 插入多条数据 db.getCollection('c1').insertMany([ { "name":"roy", }, { "address":"NX" }, ] );
- 更新数据,关键字:
$set# db.d1.update({查询条件}, {待修改内容}, {multi: 是否多条数据修改}) # multi:true表示修改满足条件所有的内容,否则只修改满足条件的第一条内容,multi默认为false db.d1.update({name:"bobo"}, {$set:{title:"alex", hobby:['抽烟', '喝酒', '烫头']}}, {multi:true}); - 删除数据
db.collection_name.remove({条件}, {justOne:true|false}) db.collection_name.remove() #删除所有记录 db.collection_name.drop() #删除collection/表 # 举例 db.col.remove({name:"jay"}, {justOne:true}) # 删除一条数据 db.collection_name.deleteOne({条件}) - 查询数据
- 普通查询
db.c1.find() #查询所有 db.c1.find({"字段":"固定值"}) #查询满足条件的所有数据 db.c1.findOne({条件}) #查询满足条件的第一条数据 db.getCollection('c1').find({"字段1":"固定值1","字段2":"固定值2"}) - 比较
等于: 默认是等于判断, $eq 小于:$lt (less than) 小于等于:$lte (less than equal) 大于:$gt (greater than) 大于等于:$gte 不等于:$ne - 看个例子吧
db.stu.insert([ {name: "朱元璋", age:800, address:'安徽省凤阳', score: 160}, {name: "朱棣", age:750, address:'江苏省南京市', score: 120}, {name: "朱高炽", age:700, address:'北京紫禁城', score: 90}, {name: "李嘉诚", age:38, address:'香港xxx街道', score: 70}, {name: "麻花藤", age:28, address:'广东省xxx市', score: 80}, {name: "大老王", age:33, address:'火星第一卫星', score: -60}, {name: "咩咩", age:33, address:'开普勒225旁边的黑洞', score: -160} ]) db.stu.find({age:28}) #查询年龄是28岁的学生信息 db.stu.find({age: {$eq: 28}}) #查询年龄是28岁的学生信息 db.stu.find({age: {$gt: 30}}) #查询年龄大于30岁的学生 db.stu.find({age: {$lt: 30}}) #查询年龄小于30岁的学生 db.stu.find({age: {$gte: 38}}) #查询年龄大于等于30岁的学生 db.stu.find({age: {$lte: 38}}) #查询年龄小于等于30岁的学生 db.stu.find({age: {$ne: 38}}) #查询年龄不等于38的学生 - 逻辑运算
db.stu.find({$and:[{age: {$eq:33}}, {name:'大老王'}]}) db.stu.find({$or: [{name: '李嘉诚'}, {age: {$gt: 100}}]}) # 查询年龄不小于38岁的人, 名字还不能是朱元璋 db.stu.find({$nor: [{age: {$lt: 38}}, {name: "朱元璋"}]}) - 存在
db.stu.find({age: {$in:[28, 38]}}) #年龄是28或者38的人 - 正则表达式
db.stu.find({address: {$regex:'^北京'}}) #查询地址是北京的人的信息 db.stu.find({address: /^北京/}) #效果一样 - 分页
db.stu.find().skip(3).limit(3) # 跳过3个. 提取3个. - 排序
#先按照age升序排列, 相同项再按照score降序排列 db.stu.find().sort({age:1, score: -1} - 统计
# 条件都是以文档类型传入 db.stu.count({age:33})
- 普通查询
- 非关系型数据库,就是这么简单
pymongo
- 基操
import pymongo import pymongo from pymongo import MongoClient #创建返回链接对象 def get_db(database): """ 连接数据库 :param database: 数据库名 :return: """ client = MongoClient(host="localhost", port=27017) db = client[database] return db def add_one(table, data): """ 新增数据 :param table: :param data: 字典格式(文档类型) :return: """ db = get_db("python") result = db[table].insert_one(data) return result def add_many(table, data_list): """ 新增多条数据 :param table: :param data_list:数据数组 :return: """ db = get_db("python") result = db[table].insert_many(data_list) return result.inserted_ids def upd(table, condition, data):#condition条件 """ 修改数据 :param table: :param condition: 匹配条件 :param data: :return: """ db = get_db("python") result = db[table].update_many(condition, {'$set':data}) return result def delete(table, condition): """ 删除数据 :param table: :param condition: :return: """ db = get_db("python") result = db[table].delete_many(condition) return result if __name__ == '__main__': # 所以操作都要指定表名,因为一个库是可以包含多个collection的 # r = add_one("stu", {"name": "西瓜", "age":18}) # print(r.inserted_id) # r = add_many("stu", [{"name": "嘎嘎"},{"name": "咔咔"}]) # print(r) # result = upd("stu", {"name": '西瓜'}, {"age": 100}) # print(result) result = delete("stu", {"name": "嘎嘎"}) print(result)
文章介绍了MongoDB的基本概念,如集合、文档、字段等,并详细阐述了安装过程和数据的增删改查操作。同时,展示了如何使用Python的pymongo库进行MongoDB的数据操作,包括添加、更新和删除数据。
1489

被折叠的 条评论
为什么被折叠?



