mongodb

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb相关的知识,希望对你有一定的参考价值。

 

MongoDB:
    数据库,nosql
    
    win:安装,设置环境变量
    默认端口:27017
    创建 C:datadb    
    [{
        id:1
        name:"蔡文姬"
        age: 16
        gender:""
    },
    {
        id:1
        name:"蔡文姬"
        age: 16
        sex:["","girl","老阿姨"]
        other:{
            hobby:["","boy","小哥哥"]
        }
    }]
    
    *使用了不存在的对象即创建该对象
    *不存在关系链接
    
    mongod  开启服务端
    mongo    客户端连接
    
    
    db                查看当前所在库
    show dbs         查看库
    use SS2DAY04     创建并进入库,内存中,要写数据才行,没有数据,不存在物理磁盘中
    show tables     查看表
    db.users        在当前库中创建表users    
    db.users.insert({name:"蔡文姬",age:16})        写入数据
    db.users.insert({name:"虞姬",age:21,gender:""})
    db.users.find()        查询
    db.users.update()    更新,设定:field
    db.users.update({"name":"蔡文姬"},{$set:{"gender":""}})
    db.users.remove({})        没有条件就删除所有的数据
    db.users.remove({"age":21})    
    
    插入:
        db.users.insert({name:"蔡文姬",age:16}) # 建议不要使用 不推荐使用
    查询:
        db.users.find()
    更新:
        db.users.update({"name":"蔡文姬"},{$set:{"age":18}})# 建议不要使用 不推荐使用
    删除:
        db.users.remove({"age":21}) # 建议不要使用 不推荐使用
        
    
    table        Collections            表
    row            Documents            数据条目
    column        Field                字段
    
    
    
MongoDB数据类型:
    Object ID :Documents 自生成的 _id 并且 不支持转换成JSON字符串
        ?:{"_id" : ObjectId("5bda5293c6c72e52ffc7e91e")}
        ObjectId:"5bda5293c6c72e52ffc7e91e" 
        0-8字节是时间戳,
        9-14字节的机器标识符,表示MongoDB实例所在机器的不同;
        15-18字节的进程id,表示相同机器的不同MongoDB进程。
        19-24字节是计数器
        
    String: 字符串,必须是utf-8
    Boolean:布尔值,true 或者false (这里有坑哦~在我们大Python中 True False 首字母大写)
    Integer:整数 (Int32 Int64 你们就知道有个Int就行了,一般我们用Int32)
    Double:浮点数 (没有float类型,所有小数都是Double)
    Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦)
    Object:如果你学过Python的话,那么这个概念特别好理解,就是Python中的字典,这个数据类型就是字典
    Null:空数据类型 , 一个特殊的概念,None Null
    Timestamp:时间戳
    Date:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型)


增删改查的支持方式:
    insert:
        db.users.insertMany([{"name":"金王吧"},{"name":"egon"}])
        db.users.insertOne({"name":"刘sir"})
        
    remove:
        db.users.deleteOne({"age":30})
        db.users.deleteMany({"age":30})
        
    update:
        db.users.updateOne({},{$set: {"cursors":"FullStack"}})
        db.users.updateMany({},{$set: {"cursors":"FullStack"}})
        
    find:
        db.users.find({})
        db.users.findOne({})
        
    
    
数学比较符:
    $lt: <
    $lte: <=
    $gt: >
    $gte: >=
    $eq;== 
    : : == or = 
    
    
    
$:
    存储满足条件的数据下标索引位置
    db.users.updateOne({"other.name":"linux","name":"银网吧"},{$set:{"other.$.score":19}})
    
    弊端:[
        [1,2,3],
        [{k:{zk:zv}},{k2:v2},{k3:v3}],
        [4,5,6],
    ]
    

$关键字 查询:
    $or : db.users.find({$or:[{age:18},{name:"银网吧"}]})
    
    $and : ,
    
    $in : db.users.find({age:{$in:[18,84,73]}})
    
    $all : db.users.find({hobby:{$all:[1,2,3,4,5,6]}})
    
    
    


$修改器 update:
$set: 直接将字段的值设定为value
$unset: 删除字段
$inc: 原值增加 db.users.updateMany({name:"金王吧"},{$inc: {cursors: 1}})
    
$array修改器:    
$push : append(item) db.users.updateMany({name:"金王吧"},{$push: {hobby:10}})
$pull : remove(item) db.users.updateMany({name:"金王吧"},{$pull: {hobby:10}})
$pop : pop() db.users.updateMany({name:"金王吧"},{$pop: {hobby:-1}})  1最后一个 -1第一个


skip limit sort

limit : db.users.find({}).limit(2) 显示条目数量
skip : db.users.find({}).skip(1) 跳过条目数量

简单分页 :db.users.find({}).limit(当前页码*每页条目).skip(每页条目)

sort :db.users.find({}).sort({ age:1 }) 1:ASC -1:DESC

分页排序多重用法:
db.users.find({}).sort({ age:-1 }).limit(2).skip(2)

 

 nosqlbooster4mongo :win端可视化连接工具

 

python中操作mongodb
    pip3 install pymongo  先安装

技术分享图片
import pymongo

# 得到一个连接对象
mongo = pymongo.MongoClient("127.0.0.1",27017)
# 连接到指定数据库的对象
MONGODB = mongo["SS2DAY04"]

#查:
# result = list(MONGODB.users.find({}))
# for item in result:
#     print(item)
# print(result)

# result_one = MONGODB.users.find_one({})
# print(result_one,type(result_one))
# print(result_one.get("_id"),type(result_one.get("_id")))

# 增:
# res = MONGODB.student.insert_one({"name":"yd","nickname":"wl"})
# print(res.inserted_id,type(res.inserted_id))
# res = MONGODB.student.insert_many([{"name":"yd","nickname":"wl"},{"name":"wpq","nickname":"cb"},{"name":"lj","nickname":"dsb"}])
# print(res.inserted_ids)

# 删:
# MONGODB.student.remove({})
# MONGODB.student.delete_one({"name":"yd"})
# MONGODB.student.delete_many({"name":"yd"})

# 改:
# MONGODB.student.update({"name":"yd"})
# MONGODB.student.update_one({"name":"wpq"},{"$set":{"nickname":"peppa pig"}})
# MONGODB.student.update_many({},{"$set":{"age":84}})


# 删:
# MONGODB.student.delete_many({})    #删除表中的所有数据
# MONGODB.student.drop()             #删表

# 分页:
# res = MONGODB.users.find({}).sort("age",pymongo.ASCENDING).limit(2).skip(0) #正向排序
# for i in res:
#     print(i)
View Code

 




以上是关于mongodb的主要内容,如果未能解决你的问题,请参考以下文章

ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项

mongodb关联查询

无法在 MongoDB(猫鼬)文档中追加数组

在 Spring MongoDB 的 ReplaceRoot 管道阶段使用 $mergeObjects

如何创建一个查询来查找 2 个数字之间的值,这些数字是 MongoDB 中的字符串类型

MongoDB GridFS