随笔 - 20  文章 - 0  评论 - 0  阅读 - 1463

mongoDB

MongoDB

01 认识MongoDB

MongoDB简介
       基于分布式文件存储的开源数据库系统。旨在为WEB应用提供可扩展的高性能数据存储解决方案。将数据存储为一个文档,文档类似于 Json格式,MongoDB是非关系型数据库,Json格式和字典格式很类似

    {
         name:"aa" ,
          age:100
          address:{city:"cs",country:"china"}
      }

 

MongoDB数据模型

 

 

02 库、集合操作

库与表操作

进入数据库:     mongo                                 

退出:        exit

显示所有库:   show dbs                          

切换/创建数据库:use 数据库名称      

> use my_db
> switched to db my_db

创建集合:         db.createCollection('name')     #里面是字符串

> db.createCollection('student')
> { "ok" : 1 }

显示当前数据库的集合: show collections     #只有里面有数据的库才能查到,如果里面没有数据 ,即便你已经创建了,你也show查不到

> show collections
> student

查看当前所在库:     db                                      

删除集合:       db.集合名称.drop()

删除库:           db.dropDatabase()     #进入以后才能删除,删除的也就是打开的那个库

 

03 文档(数据)操作

添加文档(数据):db.集合名称.insert(document)

添加一条文档 db.students.insert({name:'xiaoming',age:18})

db.students.insert({name:'xiaoming',age:18}) WriteResult({ "nInserted" : 1 }) db.students.insert({name:'qqq',age:22}) WriteResult({ "nInserted" : 1 }) db.students.insert({name:'aaa',age:55}) WriteResult({ "nInserted" : 1 }) db.students.insert({name:'zzz',age:23}) WriteResult({ "nInserted" : 1 }) db.students.insert({name:'www',age:18}) WriteResult({ "nInserted" : 1 }) db.students.insert({name:'sss',age:18}) WriteResult({ "nInserted" : 1 }) db.students.insert({name:'ddd',age:20}) WriteResult({ "nInserted" : 1 }) db.students.insert({name:'ccc',age:16}) WriteResult({ "nInserted" : 1 }) db.students.insert({name:'vvv',age:18}) WriteResult({ "nInserted" : 1 }) db.students.insert({name:'rrr',age:20}) WriteResult({ "nInserted" : 1 })

 

添加多条文档 db.students.insert([{name:'flz',age:20,sex:'男'},{name:'lanqiao',age:30,sex:'男'}])

db.students.insert([{name:'flz',age:20,sex:'男'},{name:'lanqiao',age:30,sex:'男'}]) BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 2, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })

查询文档(数据)

db.集合名称.find([conditions])

查看集合中全部数据:db.students.find() #这里会自动生成一些东西用来区分数据一样的

db.students.find() { "id" : ObjectId("6223572ecca46b2c9c9f42b0"), "name" : "xiaoming", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b1"), "name" : "qqq", "age" : 22 } { "id" : ObjectId("6223572ecca46b2c9c9f42b2"), "name" : "aaa", "age" : 55 } { "id" : ObjectId("6223572ecca46b2c9c9f42b3"), "name" : "zzz", "age" : 23 } { "id" : ObjectId("6223572ecca46b2c9c9f42b4"), "name" : "www", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b5"), "name" : "sss", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b6"), "name" : "ddd", "age" : 20 } { "id" : ObjectId("6223572ecca46b2c9c9f42b7"), "name" : "ccc", "age" : 16 } { "id" : ObjectId("6223572ecca46b2c9c9f42b8"), "name" : "vvv", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b9"), "name" : "rrr", "age" : 20 }

id也可以自己设置

db.students.insert({"name":'qi',id:1}) WriteResult({ "nInserted" : 1 }) db.students.find() { "id" : ObjectId("6223572ecca46b2c9c9f42b0"), "name" : "xiaoming", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b1"), "name" : "qqq", "age" : 22 } { "id" : ObjectId("6223572ecca46b2c9c9f42b2"), "name" : "aaa", "age" : 55 } { "id" : ObjectId("6223572ecca46b2c9c9f42b3"), "name" : "zzz", "age" : 23 } { "id" : ObjectId("6223572ecca46b2c9c9f42b4"), "name" : "www", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b5"), "name" : "sss", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b6"), "name" : "ddd", "age" : 20 } { "id" : ObjectId("6223572ecca46b2c9c9f42b7"), "name" : "ccc", "age" : 16 } { "id" : ObjectId("6223572ecca46b2c9c9f42b8"), "name" : "vvv", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b9"), "name" : "rrr", "age" : 20 } { "id" : 1, "name" : "qi" }

格式化显示:db.students.find().pretty()

查看满足条件的数据:db.students.find({name:'xiaoming'})

db.students.find({name:'xiaoming'}) { "_id" : ObjectId("6223572ecca46b2c9c9f42b0"), "name" : "xiaoming", "age" : 18 }

噩梦条件

and条件 {$and:[{expression1},{expression1},...]}

or条件 {$or:[{expression1},{expression1},...]}

and和or混用

db.table.find({$or:[{$and:[{sex:'女'},{age:18}]},{$and:[{sex:'男'},{age:{$gt:18}}]}]})

例:

db.students.find({$or:[{name:’xiaoming’},{age:18}]})

操作符 描述

$ne 不等于

$gt 大于

$lt 小于

$gte 大于等于

$lte 小于等于

例子:一写冒号就是字典,必须用{}括起来,操作符也必须用{}括起来

db.students.find({"age":{$gte:18}}) { "id" : ObjectId("6223572ecca46b2c9c9f42b0"), "name" : "xiaoming", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b1"), "name" : "qqq", "age" : 22 } { "id" : ObjectId("6223572ecca46b2c9c9f42b2"), "name" : "aaa", "age" : 55 } { "id" : ObjectId("6223572ecca46b2c9c9f42b3"), "name" : "zzz", "age" : 23 } { "id" : ObjectId("6223572ecca46b2c9c9f42b4"), "name" : "www", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b5"), "name" : "sss", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b6"), "name" : "ddd", "age" : 20 } { "id" : ObjectId("6223572ecca46b2c9c9f42b8"), "name" : "vvv", "age" : 18 } { "_id" : ObjectId("6223572ecca46b2c9c9f42b9"), "name" : "rrr", "age" : 20 }

修改文档(数据)

条件+要修改的东西

db.集合名称.update(<query>,<update>,{multi:<boolean>})

修改一条数据:db.students.update({sex:'男'},{age:20}) #会覆盖掉

db.students.update({name:'aaa'},{age:88}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

db.students.find() { "id" : ObjectId("6223572ecca46b2c9c9f42b0"), "name" : "xiaoming", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b1"), "name" : "qqq", "age" : 22 } { "id" : ObjectId("6223572ecca46b2c9c9f42b2"), "age" : 88 } { "id" : ObjectId("6223572ecca46b2c9c9f42b3"), "name" : "zzz", "age" : 23 } { "id" : ObjectId("6223572ecca46b2c9c9f42b4"), "name" : "www", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b5"), "name" : "sss", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b6"), "name" : "ddd", "age" : 20 } { "id" : ObjectId("6223572ecca46b2c9c9f42b7"), "name" : "ccc", "age" : 16 } { "id" : ObjectId("6223572ecca46b2c9c9f42b8"), "name" : "vvv", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b9"), "name" : "rrr", "age" : 20 } { "_id" : 1, "name" : "qi" }

 

指定属性修改:{$set:{age:20}} #只修改其中一部分

db.table.update({name:'xiaoming'},{$set:{age:666,sex:'xx'}})

db.students.update({name:'www'},{$set:{age:60}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

db.students.find() { "id" : ObjectId("6223572ecca46b2c9c9f42b0"), "name" : "xiaoming", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b1"), "name" : "qqq", "age" : 22 } { "id" : ObjectId("6223572ecca46b2c9c9f42b2"), "age" : 88 } { "id" : ObjectId("6223572ecca46b2c9c9f42b3"), "name" : "zzz", "age" : 23 } { "id" : ObjectId("6223572ecca46b2c9c9f42b4"), "name" : "www", "age" : 60 } { "id" : ObjectId("6223572ecca46b2c9c9f42b5"), "name" : "sss", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b6"), "name" : "ddd", "age" : 20 } { "id" : ObjectId("6223572ecca46b2c9c9f42b7"), "name" : "ccc", "age" : 16 } { "id" : ObjectId("6223572ecca46b2c9c9f42b8"), "name" : "vvv", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b9"), "name" : "rrr", "age" : 20 } { "_id" : 1, "name" : "qi" }

 

更新集合中所有满足条件的文档:{multi:true}

db.students.update({sex:'男'},{$set:{sex:'女'}},{multi:true})

db.students.update({sex:'男'},{$set:{sex:'女'}},{multi:true}) WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })

db.students.find() { "id" : ObjectId("6223572ecca46b2c9c9f42b0"), "name" : "xiaoming", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b1"), "name" : "qqq", "age" : 22 } { "id" : ObjectId("6223572ecca46b2c9c9f42b2"), "age" : 88 } { "id" : ObjectId("6223572ecca46b2c9c9f42b3"), "name" : "zzz", "age" : 23 } { "id" : ObjectId("6223572ecca46b2c9c9f42b4"), "name" : "www", "age" : 60 } { "id" : ObjectId("6223572ecca46b2c9c9f42b5"), "name" : "sss", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b6"), "name" : "ddd", "age" : 20 } { "id" : ObjectId("6223572ecca46b2c9c9f42b7"), "name" : "ccc", "age" : 16 } { "id" : ObjectId("6223572ecca46b2c9c9f42b8"), "name" : "vvv", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b9"), "name" : "rrr", "age" : 20 } { "id" : 1, "name" : "qi" } { "id" : ObjectId("62236218cca46b2c9c9f42ba"), "name" : "flz", "age" : 20, "sex" : "女" } { "_id" : ObjectId("62236218cca46b2c9c9f42bb"), "name" : "lanqiao", "age" : 30, "sex" : "女" }

删除文档(数据)

db.集合名称.remove(<query>,{justOne:<boolean>})

删除集合中所有的文档:db.table.remove({})

删除集合中满足条件的所有文档 db.table.remove({sex:'男'})

只删除集合中满足条件的第一条文档:{justOne:true}

db.table.remove({sex:'男'},{justOne:true})

04 Python操作mongodb,PythonMogoDB交互

pymongo

安装 pip install pymongo

建立连接:pymongo.MongoClient()

指定数据库:db=client[数据库名]

指定集合:collection=db[集合名]

官方推荐

查找文档:find_one() 查找所有:find()

添加文档:insert_one 添加多条:insert_many()

删除文档:delete_one 删除多条:delete_many()

修改文档:update_one 修改多条:update_many()

posted on   请你一定要记得我好吗  阅读(34)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示