MongoDB学习笔记

MongoDB学习笔记

2025年05月11日 阅读:13 字数:362 阅读时长:1 分钟

这段时间在改造Api项目,用MongoDB存储数据,记录一些问题和笔记。

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
)

推荐阅读

恰饭区

评论区 (0)

0/500

还没有评论,快来抢第一吧