MongoDB
一、安装和启动
默认监听端口:27017
添加环境变量
启动:mongod --dbpath=="d:/data/db"
可视化工具:NoSQLBooster for MongoDB
二、介绍
mongoDB是一个NoSQL文件型数据库,非常自由,只要是JSON格式的都能存储。
数据类型:ObjectID、string、boolean、int、double、arrays、object、null、timestamp、date
objectID:前八位是时间戳,后八位是机器的机器码,后四位是进程id,后六位是计数器,这四个值拼成世上唯一的id
三、基本命令
在mongo中,使用了不存在的对象即创建该对象,如果这个对象是空的库或表,则先写在内存中,等有数据时再写入磁盘中。
show databases 查询本地数据库(磁盘中) use db_name 切换当前数据库 db 查看当前使用的数据库 show tables 查看当前数据库中的表(磁盘中) use 不存在的数据库名即创建数据库(内存中) db.不存在的表即创建表(内存中)
# 增 db.tablename.insert({}) db.tablename.insert([{},{}]) 插入多条 db.tablename.insertOne({}) 推荐 db.tablename.isnertMany({}) 推荐 # 删 db.tablename.remove({查询条件}) # 不指定条件则删除全部数据
db.tablename.deleteOne({})
db.tablename.deleteMany({}) # 改 db.tablename.update()
db.tablename.updateOne({}.{})
db.tablename.updateMany({},{})
$关键字还用来存储当前Array符合条件的元素的下标
db.tablename.updateOne({name:"123",hobby:"睡觉"},{$set:{"hobby.$":"吃饭"}}) 可以直接把hobby列表中的睡觉改为吃饭
db.tablename.updateOne({name:"123"},{$set:{"student.name":"123"}}) 可以直接修改字典
修改都基于$修改器 $set 强制将某字段修改,如果该字段不存在则创建 db.tablename.update({name:"123"},{$set:{name:"321"}}) $unset 清空并删除字段 db.tablename.update({name:"321"}, {$unset:{name:1}}) $inc 引用增加 db.tablename.update({name:"123"},{$inc:{age:1}}) $push $pushAll $pull $pullAll 针对Array操作,删除会删掉所有符合操作的 $pop 删除第一条或最后一条 # 查 db.tablename.find({查询条件}) db.tablename.findOne({xxx}) #返回第一条,json数据 $数字比较符,只能用于数字 $gt 大于 $lt 小于 $gte大于等于 $eq 等于 $ne 不等于 db.tablename.find({age:{$gt:70}})
$and $or
db.tablename.findOne({$and:[{条件},{条件}]})
$in $all
db.tablename.findOne({name:{$in:[1,2,3]}})
选取、跳过、排序
顺序:排序》跳过》选取(可以用来做分页) # 排序 db.tablename.find({}).sort({age:-1}) # 跳过 db.tablename.find({}).skip(2) # 选取 db.tablename.find({}).limit(2)
四、PyMongo
from pymongo import MongoClient MC = MongoClient("127.0.0.1", 27017) db = MC["dbname"] # 创建或选择数据库 player_info = { "name": "xxx" } # 增 res = db.player.insert_one(player_info) res.inserted_id\res.inserted_ids # 返回一个objectID对象,不能被序列化,但是能转换成字符串 # 查 res = db.player.find({}) # 返回一个列表 res = db.player.find_one({"age":{"$gt":18}}) # 返回符合条件的第一个数据,是一个字典 # 改 res = db.player.update_one({"name":"123"}, {"$set": {"name":"321"}}) # 删 from bson.objectid import ObjectId res = db.player.delete_one({"_id":ObjectId"xxxx"}) # 排序 from pymongo import ASCENDING, DESCENGING # 其实就是1和-1 db.player.find({}).sort("_id", ASCENGING) res.delete_count # 删除的数量