前言
针对本笔记有以下必看内容,请优先阅读
另外这只是学习笔记,如您在工作方面有所需求请阅览菜鸟教程-MongoDB
本笔记格式可能对竖屏移动端不太友好,请移动端尽量使用横屏访问
查.find
使用.findOne以只查询一条数据
python .find_one
find的用法
find的用法是最基础的,很多find的用法在语句中都是通用的,笔记不赘述需灵活应变
.find({
//筛选条件语句
},{
//显示条件语句
})
显示选定数据
0
不显示,1
显示
.find({...},{"_id":0,"字段1":1,"字段1":1})
查询全部数据
.find({})
筛选指定数据
查询整数型浮点型值时不需要添加双引号
.find({
"键":"值",
"键2":"值2",
...
})
筛选范围数据
操作 | 指令 | 操作 | 指令 | 操作 | 指令 |
---|---|---|---|---|---|
等于 | 小于 | $lt | 小于等于 | $lte | |
不等于 | $ne | 大于 | $gt | 大于等于 | $gte |
长度(数组) | $size |
查询整数型浮点型值时不需要添加双引号
.find({
"键":{
"指令":值,
"指令2":值2,
...
}
})
高级语法使用
指令 | 解释 |
---|---|
$and | AND语法与正常写查询语句效果无异 |
$or | 或语句,只要符合其中一条条件就为True |
.find({
"$and":[
{"键":"值"},
{"键2":"值2"}
]
})
查询子文档
.find({
"键.子文档键":"值",
"键2.子文档键":"值2",
...
})
更多命令
统计.count
统计查询的记录数
.find({...}).count()
跳过结果.skip
跳过的文档数量
.find({...}).skip(值)
填10则代表返回结果时跳过前10个文档
限制结果.limit
返回的文档数量
.find({...}).limit(值)
填10则代表只返回前10个文档
排序.sort
1
表示升序,-1
表示降序
.find({...}).sort({
"键1":1,
"键2":-1
})
增.insert
单条数据.insertOne
python .insert_one
添加整数型浮点型值时不需要添加双引号
.insertOne({
"键":"值",
"键2":"值2",
...
})
多条数据.insertMany
python .insert_many
添加整数型浮点型值时不需要添加双引号
.insertOne([
{"键":"值","键2":"值2",...},
{"键":"值","键2":"值2",...},
...
])
删.delete
python .delete_one
使用.deleteMany以删除多条数据
python .delete_many
删除整数型浮点型值时不需要添加双引号
.deleteOne({
"键":"值",
"键2":"值2",
...
})
改.update
python .update_one
使用.updateMany以更新多条数据
python .update_many
操作 | 指令 | 操作 | 指令 |
---|---|---|---|
设置新值 | $set | 自增值 | $inc |
修改整数型浮点型值时不需要添加双引号
.updateOne(
{ "name": "Alice" }, // 过滤条件
{ $set: { "age": 26 } }, // 更新操作
{ "upsert": false } // 可选参数,可不添加
);
"age": NumberInt(26) - 指定数据类型为整数型
聚合.aggregate
过滤数据$match
用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。
.aggregate([{
"$match":{...}
}])
修改文档结构$project
修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
.aggregate([{
"$project":{...}
}])
一般可用于修改显示选定数据,与下类似
0
不显示,1
显示
.find({...},{"_id":0,"字段1":1,"字段1":1})
分组$group
对输出结果进行分组
用法示例
.aggregate([{
"$group":{
"_id":"$banji",
"最大年龄":{"$max":"$age"},
"最小年龄":{"$min":"$age"},
"平均年龄":{"$avg":"$age"}
}
}])
连接$lookup
指令 | 解释 |
---|---|
from | 指定要连接的集合 |
localField | 当前集合中的字段 |
foreignField | 要连接的集合中的字段 |
as | 连接后结果的别名 |
用法示例
.aggregate([
{
"$lookup":{
"from":"product", //指定要连接的集合
"localField":"product_id", //当前集合中的字段
"foreignField":"product_id", //要连接的集合中的字段
"as":"product_info" //连接后结果的别名
}
},
{
"$unwind":"$product_info"
},
{
"$project":{
"_id":0,
"订单ID":"$order_id",
"产品ID":"$product_id",
"产品名称":"$product_info.product_name",
"产品类型":"$product_info.product_type",
"购买数量":"$count",
}
}
])
拆分$unwind
将数组中的每个元素拆分成单独的文档
.aggregate([
{...},
{
"$unwind":"$product_info" //此处拆分product_info
},
{...}
])