ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MongoDB

2022-09-13 21:02:10  阅读:264  来源: 互联网

标签:name students MongoDB age db 18 find


MongoDB介绍

Mongodb  非关系型数据库 但是他是最像关系型
类似于Json格式
数据里面有数据,再有数据  mysql 就比较难做到
分布式储存  计算机节点上  集群
Mangodb数据库 文档数据  json 格式
​
集群  运维搭建集群  
一个集合类似于关系数据库中的表table
最小的单元是文档---数据
缺点:比较耗内存

MongoDB基本操作

mongo  # 进入mongo
exit  # 退出
​
显示所有数据库
show dbs
前3个是配置信息
# 进入数据库,创建 都是用use
​
如果没有库他会默认一个 test
​
use class13
# 进入了才能删除
db.dropDatabase()  必须大写
# 查看当前数据库
db
# mango 只有存在集合(数据)的数据库 才是有用的,才有价值,空数据库没有存在的价值
​
# 创建集合
db.createCollection('students')    必须大写   当然 也可以不用创集合 你在给集合加内容时就会自动创建
# 显示当前数据库的集合
show collections
# 删除集合
db.students.drop()

 

知识点一:MongoDB的常用操作

默认情况下,在集合中插入文档时,如果字段名中没有_id的字段名称,则MongoDB将自动添加一个ObjectId字段。 ​

ObjectId是轻量型的,不同的机器都能全局唯一的生成它;ObjectId使用12字节的存储空间。

文档操作
想给集合插入数据
db.students.insert({'name':'xiaoming','age':18})
db.students.insert({'name':'aaa','age':22})
db.students.insert({'name':'bbb','age':18})
db.students.insert({'name':'ccc','age':18})
# 查看全部的数据
db.students.find()
# 唯一的Object id
# 指定_id
db.students.insert({"_id":123,"name":"sss",'age':13})
​
# 创建多个就是写到列表中就OK了
db.students.insert([{'name':'parker1','age':13},{'name':'parker2','age':14},{'name':'parker3','age':16}])
批量插入的结果是 3条
​
# 查询
db.students.find()
db.students.find().pretty()   # 格式化显示  /ˈpretty/漂亮的
# 查看满足条件的的数据
db.students.find({'name':'parker2'}) # 就能查出来
# 格式化显示
db.students.find({'name':'parker1'}).pretty()
​
----------------------------------------------------------------
条件$gte   $gt    $lte    $lt
db.students.find({age:{$gte:18}})   大于等于18的
db.students.find({age:{$gt:18}})   大于18的
db.students.find({age:{$lte:18}})   小于等于18的
db.students.find({age:{$lt:18}})   小于18的
​
and条件
or条件
$and
db.students.find({$and:
                  [
                      {'name':'parker1'},
                      {'age':13}
                  ]
                 })
# name='parker1' and age=13
db.students.find({$or:
                  [{'name':'parker2'},
                   {'age':18}]
                 }).pretty()
# name=parker2 or age=18
​
​
and和 or混用
db.students.find({$or:[{},{}]})
​
db.students.find({$or:[{$and:[{},{}]},{$and:[{},{}]}]})
​
db.students.find({$or:[{$and:[{"name":"parker1"},{"age":13}]},{$and:[{"name":"xiaoming"},{"age":18}]}]})
​
​
({$or:[{$and:[{}, {}]},{$and:[{}, {age:{}}]}]})
​
​
# 修改数据
# 修改一条数据
# 两个字典  第一个是条件    只会更新找到的第一条数据
db.students.update({'name':'parker1'},{'name':'new_name'})
# 把前面所有的东西全部覆盖掉,替换掉
db.students.update({'name':'parker3'},{'name':'parker4','age':100})
# 现在我不想这样做,我要修改我指定的数据
db.students.update({'name':'parker2'},{$set:{'age':1000}})
# 他只改找到的第一条数据
db.students.update({"age":18},{$set:{"name":'baobao'}})
# 看一下区别
db.students.update({"age":18},{"name":'baobao'})
​
$set:有就修改,没有就创建
​
删除文档(数据)
# 删除满足条件的文档
db.students.remove({'name':'aaa'})
# 删除满足条件第一条的文档
db.students.insert({'name':'bbb','age':18})
db.students.remove({'name':'bbb'},{justOne:true})
# 删除所有的文档
db.students.remove({})

 

知识点二:Python操作MongoDB

import pymongo  # 导入模块
# 1.建立连接
collection.insert_one({'name':''})
​
​
sudo ufw allow 27017  更新
-----------------------------------------------------------
​
import pymongo
​
# 建立连接
client = pymongo.MongoClient('127.0.0.1',27017)  # 可以省略
# 指定数据库
db = client['python3']
# 指定集合
my_col = db['student']
# 数据操作 (怎删改查)
# 增
# my_col.insert({'name':'parker1','age':16})
# 增多个
my_col.insert_many([{'name':'parker1','age':13},{'name':'parker2','age':14},{'name':'parker3','age':16}])
​
# 查
# res = my_col.find_one()
# print(res)
​
# res = my_col.find()
# print(res)
# for i in res:
#     print(i)
​
# 改
# my_col.update_one({'name':'parker1'},{'$set':{'age':100}})
# 查看
# res = my_col.find_one({'name':'parker1'})
# print(res)
​
# 删    删除一个
res = my_col.delete_one({'name':'parker3'})
print(res)
import pymongo
​
client = pymongo.MongoClient('127.0.0.1',27017)
db = client['mydb']
collection = db['stu']
​
collection.insert_one({'name':'aa','age':18})
collection.insert_many([
    {'name':'bb','age':19},
    {'name':'cc','age':20},
])
​
for i in collection.find():
    print(i)
print(collection.find_one({'name':'bb'}))

 

 

标签:name,students,MongoDB,age,db,18,find
来源: https://www.cnblogs.com/yesirya/p/16690814.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有