MongoDB学习笔记

MongoDB是一种NoSQL类型数据库,与关系型数据库相比,它具有很强的灵活性,无需类似Sequelize这样的ORM库,即可直接访问。例如,使用nodejs访问MongoDB:

1
2
3
4
5
6
7
8
const { MongoClient } = require("mongodb");
const db= await MongoClient.connect(appConfig.mongoUri);
var dbo = db.db(appConfig.mongodbName);
var actions = await dbo.collection("actions").find({"equipmentId":req.query.equipmentId}, {
"limit":parseInt(req.query.limit) || 25,
"skip":parseInt(req.query.offset)|| 0
}).toArray();
db.close()

尽管MongoDB很灵活,但在设计其数据模型时,为了确保数据组织的一致性,应遵循一下原则:

  • 一个文档就是一个实体对象,应精心设计
  • 文档中包含的任何对象,都对应实体

分页查询及排序

请参考以下代码:

1
2
3
4
var departments = await dbConnect.collection("departments").find({}, {
"limit":parseInt(req.query.limit) || 25,
"skip":parseInt(req.query.offset)|| 0
}).sort({_id:-1}).toArray();

更新数组中某个对象的字段值

请参考MongoDB更新数组中某个对象的元素

参考链接

  1. The MongoDB 4.4 Manual,by mongodb.
  2. Sequelize ORM,by sequelize.
  3. MongoDB 分页查询的方法及性能,by 笋干.
  4. 移动测试开发 Mongodb 的分页优化及索引使用,by opentest-oper@360.cn.
  5. MongoDB更新数组中某个对象的元素,by zackku.
  6. Mongodb数组操作$(update)、$占位符更新嵌套数组、嵌套文档集合,by OceanSky6.