1. 查询
1.1. 查询所有数据
db.goods.find();
1.1. 分页查询
这是最简单的分页方法,但在数据量特别大时性能较差
db.users.find().skip((pageNum-1)*pageSize).limit(pageSize)
对于大数据量,可以用上一页的最后一条记录的id来辅助查询
// 第1页
db.users.find().limit(pageSize)
// 获取第1页最后一条记录的_id
// 第2页
db.users.find({'_id': {'$gt': ObjectId(last_id)}}).limit(pageSize)
1.2. AND查询
当需要同时满足多个条件时,可以使用$and运算符。
db.users.find({
$and: [
{ age: { $gt: 18, $lte: 30 } }, // 年龄大于18,小于等于30
{ gender: "female" }, // 姓名等于女性
{ name: { $regex: /^M/ } }, // 姓名以M开头
{ role: { $in: ["admin", "editor"] } } // 角色属于admin或editor
]
});
1.3. OR查询
在实际应用中,可能需要根据多个字段和条件进行复杂的查询。
// 这个查询将返回所有state1等于11且state2等于22的文档,或者value大于300的文档
db.getCollection('users').find({
$or: [
{ $and: [ {"state1": 11}, {"state2": 22} ] },
{ "value": { $gt: 300 } }
]
})
1.4. 查询重复记录
db.集合名称.aggregate([
{
$group: {
_id: "$fieldName", // 按照字段分组
count: { $sum: 1 } // 统计每个分组的文档数量
}
},
{
$match: {
count: { $gt: 1 } // 筛选出数量大于1的分组,即存在重复记录的字段值
}
},
{
$sort: {
count: -1 // 按照重复数量降序排序(可选)
}
}
]);
2. 更新
2.1. 字段改名
db.集合名称.update(
{},
{$rename: {"旧字段名": "新字段名"}},
false,
true
)
还没有评论,快来抢第一吧