查询
2025/5/13小于 1 分钟mongodb数据库
查询
// 条件过滤查询,字段1和字段2同时满足
db.col.find({field1: "field1Value", field2: "field2Value"})
// 或逻辑怎么查
db.col.find({
$or: [{field1: "1"}, {field2: "2"}]
})
// 不等于怎么查
db.col.find({ status: { $exists: true, $ne: "active" } })
// 不在多个值里怎么查
db.users.find({ status: { $nin: ["active", "pending"] } })
// 限制返回条数
db.col.find({field: "fieldValue"}).limit(1)
// 常见类似json格式化打印,一个字段一行
db.col.find({field: "fieldValue"}).limit(1).pretty()
// 自定义格式化打印
db.col.find({field: "fieldValue"}).limit(1).forEach(doc => {
print(`${doc.field1},${doc.createtime.toISOString()},${doc.deadline.toISOString()},${doc.field2}`)
})
// 查询文档字段的数据类型
db.col.find().limit(1).forEach(doc => {
print(typeof doc.createtime);
})
聚合查询
// 根据集合中字段分组
db.col.aggregate([
{
$group: {
_id: "$xx_id", // xx_id 是字段名,按xx_id分组
avg_worktime: { $avg: "$worktime" } // worktime 是字段名,计算每组的平均值
}
}
])
// 聚合时,先匹配文档再分组
db.col.aggregate([
{
$match: {
status: { $in: ["pass", "not_pass"] }
}
},
{
$group: {
_id: "$xx_id",
avg_worktime: { $avg: "$worktime" },
count: { $sum: 1 } // 可选:添加计数显示每个分组有多少文档
}
}
])
// 也可以先筛选数据,再聚合分组
db.col.find({status: {$in: ["pass","not_pass"]}}).aggregate([
{
$group: {
_id: "$xx_id",
avg_worktime: { $avg: "$worktime" },
count: { $sum: 1 } // 可选:添加计数显示每个分组有多少文档
}
}
])