mongo第一次上手项目基操+pymongo项目基操使用
简介:该文章主要介绍 mongo及pymongo的一些上手过程中可能需要的基本操作, 另外文章中有很多链接是我在学习过程中整合了一些比较有帮助的网站,我的本意是简洁地列出一部分经常使用的操作,一些没介绍到的点在对应的链接中都有详尽的体现,如有错误还请指正,不足之处会持续更新
mongo 数据库基本使用
项目中 mongo 可以通过直接 mongo 所在服务器进行操作, 一般使用 XSell (XShell破解版下载地址) 或者直接用命令行连接,输入下面命令之后还需要输入一下密码即可连接成功
ssh 用户名@服务器地址
到这里可以进行 mongo 的连接, 这时需要注意看 mongo 的配置中是否需要登录认证(一般在 /etc/mongod.conf 文件中)
若不需要认证,则直接使用 mongo 即可进入数据库进行操作,若需要认证的话可以使用下面命令来登录:
mongo -u用户名 -p密码
或者通过URI配置连接也可以(URI一般可能出现在项目的配置中,此配置也可在pymongo中直接使用)
mongo mongodb://username:password@127.0.0.1:27017
更多连接方式可以参考此链接 MongoDB 连接, 介绍的还是比较详尽的
mongo连接后数据库使用
进入 mongo 后我们可以使用如下命令, 更多详细操作见如下链接 MongoDB的基本操作(也可以在这看到 mongo 的一些简介)
db –显示当前所使用的数据库
show dbs –显示所有数据库名称
use 数据库名字 –切换到所输入的数据库
show tables –显示当前数据库下的所有数据表名称
mongo 数据查操作
S. 简单查询
db.getCollection(‘表名’).findOne({‘字段名’: ‘确定值’}) –获取该检索条件下第一条数据
db.getCollection(‘表名’).find({}) –无检索条件即获取所有数据,也可以直接写为 find()
db.getCollection(‘表名’).find({}, {’_id’:0}) –第二个参数对显示字段设置,默认显示所有字段,当设置某些字段值为 0 时则不显示该字段
db.getCollection(‘表名’).find({}, {’_id’:1}) –当设置某些字段值为 1 时则只显示这些被设置的字段,其他字段则默认为 0
这里需要注意的是若不指定 sort 字段则默认按照 _id 字段(自然顺序)或者索引字段升序排列
db.getCollection(‘表名’).find().sort({‘字段名’:1}) –按照某字段对结果进行排序,1 为升序, -1 为降序
SSR. 高级条件检索
大于 $gt,小于 $lt, 大于等于 $gte, 小于等于 $lte
db.getCollection(‘表名’).find({‘字段名’: {’$gt’:‘某个界限’}) –获取大于某个界限的数据集 小于:$lt, 小于等于:$lte, 大于等于:$gte
下面列举单个字段的并列条件,针对对字段条件并列 $and 详细用法参考 官方文档
db.getCollection(‘表名’).find({‘字段名’: {’$gt’:‘某个界限’, ‘$lte’: ‘某个界限’}) –获取某个字段大于某个界限同时小于某个界限的数据集
多条件或关系 $or 详细用法参考 官方文档
db.getCollection(‘表名’).find({’$or’:[{‘字段名’: {’$gt’: 10}}, { {‘字段名’: {’$lte’: 1}}]}) –获取大于10或者小于1的数据集
不等于 $ne
db.getCollection(‘表名’).find({‘字段名’:{’$ne’: ‘确定值’}}) –获取不等于确定值的数据集
包含 $in 不包含 $nin
db.getCollection(‘表名’).find({‘字段名’:{’$in’: [1, 2, 3]}}) –获取字段中等于集合中数据值的数据集, 反向条件为 $nin
存在 $exists
db.getCollection(‘表名’).find({‘字段名’:{’$exists’: true}}) –获取是否存在某字段的数据集, 不存在则填 false
正则 $regex
db.getCollection(‘表名’).find({‘字段名’:{’$regex’: ‘正则条件’}}) –获取改正则条件下的数据集, 其中圈定正则界限的引号可以使用 / 代替
- 更多用法如 $exists, $all, $mod 可参考: python-pymongo高级查询
- 对时间戳日期等查询可以参考 mongodb 时间类型 date
mongo 数据改操作
首先列出修改数据的三种函数, 其中要注意修改需要使用修改操作符 $set,$unset, $inc,$rename, 嵌入式文档修改及更新数组中的值,这些修改操作符用法可参考 Update Operators 文档
db.getCollection('表名').update( # 该方法可以修改一个或多个现有文档的特定字段或完全替换一个现有文档&