magic-api的使用(操作mongodb数据库)
文章主要是在magic-api上编写接口时所使用的mongodb数据库操作语句的例子,另外补充了一些常用的运算符,后续会持续进行更新
·
操作
查
-
查询条件同一使用selectQuery,一个接口有其他查询条件的话单独写
-
const selectQuery = { // 查询条件 /** "t_id": "ruzhudiaofang", "f_jbxx_laoren": [ laoren ], "deleted": 0, **/ // 限制范围 $in // 设置查询的某个字段的值在指定范围内的数据 "字段名": { "$in": [] } // 模糊查询 $regex // 会模糊匹配数据,只要数据中后keyword值,就会查到该数据 "字段名": { // 模糊查询 "$regex": keyword } }
-
查询语句写法
-
基本查询语句
-
// cid为工作区id // find当中是查询条件 // 返回一个数组 const rows = mongo.database('数据库').collection(cid).find(selectQuery).list()
-
-
带分页查询
-
const page = body.page ? body.page : 1; // 请求传递的page const pageSize = body.pageSize ? body.pageSize : 10; // 请求传递的pageSize const skip = (page - 1) * pageSize; // 跳过多少条数据 // skpt() 指定跳过的数据条数,开始是0,当第二页时,会跳过skip条数据 // limit() 设置返回的数据条数 const rows = mongo.database('数据库').collection(cid).find(zuZhiObj).skip(skip).limit(pageSize).list();
-
-
带排序查询
-
// sort() 括号里面是一个对象,对象的属性名是要基于那个字段进行排序,属性值有-1和1,-1是降序排序,也就是让最新的数据在最前面 let rows = mongo.database('数据库').collection(cid).find(gonggaoQueryObj).sort({ FB_time: -1 }).skip(skip).limit(pageSize).list();
-
-
模糊查询
-
// 指定字段进行模糊匹配,使用关键字 $regex const selectLaoRen = { "t_id": "laoren", "deleted": 0, "name": { // 模糊查询 "$regex": laorenName } } const laorenArr = mongosql.find(selectLaoRen).list() const count = mongosql.count(selectLaoRen);
-
-
指定返回的字段
-
// 通过 projection 进行指定返回的字段,将要返回的字段的属性值置为1就标识返回,projection 要写在find之后 const listQuery = { "t_id": 'laoren', "deleted": 0, "age": { "$gte": 55, }, }; const list = mongosql.find(listQuery).projection({ name: 1, age: 1, }).list();
-
-
增
-
添加条件同一使用saveData,一个接口有其他添加条件的话单独写
-
const saveData = { '_id': _id, // 数据的id // 其他添加字段 }
-
-
添加语句写法
-
// 用saveResult标识添加语句执行的结果 const saveResult = mongo.database('数据库').collection(cid).insert(saveData);
-
-
添加成功与否的判断
-
// 如果该添加语句执行成功,会返回null if (saveResult === null) { // 自定义成功返回的数据 return response.json({ code: '10000', success: 'success', message: '新增成功' }) } else { return response.json({ code: '10001', error: 'error', message: '新增失败' }) }
-
改
-
修改条件同一使用updataQuery,一个接口有其他更改条件的话单独写
-
这个主要是用来定位要修改数据的
-
const updataQuery = { "_id": _id }
-
-
修改语句写法
-
// 更新语句(此处是updateOne,更新一条数据) // updateOne(参数一, 参数二) // 参数一用来锁定要更新的数据 // 参数二是要修改的字段 const updataResult = mongo.database('数据库').collection(cid).updateOne(updataQuery, { $set: diaoFangRecord })
-
-
更新成功与否的判断
-
updataResult接收更新语句执行的结果,是一个对象
-
"updataResult": { "matchedCount": 1, // 匹配的条数 "modifiedCount": 1, // 修改的条数, 如果修改后和原数据一致会返回0 "upsertedId": null },
-
if(updataResult.matchedCount) { // 个人感觉只要匹配到数据就相当于数据更新成功,即使数据和原数据没有任何变化 return response.json({ code: '10000', success: 'success', message: '更新成功' }) } else { return response.json({ code: '10001', success: 'error', message: '更新失败' }) }
-
-
运算符
查询使用运算符
- 常用
$eq
:等于运算符,用于匹配字段值等于指定值的文档。例如:{ 字段名: { $eq: 值 } }
。$ne
:不等于运算符,用于匹配字段值不等于指定值的文档。例如:{ 字段名: { $ne: 值 } }
。$gt
:大于运算符,用于匹配字段值大于指定值的文档。例如:{ 字段名: { $gt: 值 } }
。$gte
:大于等于运算符,用于匹配字段值大于等于指定值的文档。例如:{ 字段名: { $gte: 值 } }
。$lt
:小于运算符,用于匹配字段值小于指定值的文档。例如:{ 字段名: { $lt: 值 } }
。$lte
:小于等于运算符,用于匹配字段值小于等于指定值的文档。例如:{ 字段名: { $lte: 值 } }
。$in
:在指定值数组中的运算符,用于匹配字段值在指定值数组中的文档。例如:{ 字段名: { $in: [值1, 值2, ...] } }
。$nin
:不在指定值数组中的运算符,用于匹配字段值不在指定值数组中的文档。例如:{ 字段名: { $nin: [值1, 值2, ...] } }
。$exists
:检查字段是否存在的运算符,用于匹配包含指定字段的文档。例如:{ 字段名: { $exists: true } }
。$and
:逻辑与运算符,用于同时满足多个条件的文档。例如:{ $and: [{ 条件1 }, { 条件2 }, ...] }
。
更新使用运算符
- 常用
$set
:用于设置文档中的字段值。例如:{ $set: { 字段名: 值 } }
。$inc
:用于将字段的值增加一个指定的数值。例如:{ $inc: { 字段名: 增加的值 } }
。$mul
:用于将字段的值乘以一个指定的数值。例如:{ $mul: { 字段名: 乘以的值 } }
。
- 不常用
$unset
:用于从文档中删除指定字段。例如:{ $unset: { 字段名: 1 } }
。$rename
:用于将字段重命名为一个新的名称。例如:{ $rename: { 原字段名: 新字段名 } }
。$currentDate
:用于将字段的值设置为当前的日期或时间。例如:{ $currentDate: { 字段名: true } }
。$addToSet
:用于向数组字段中添加元素,如果元素已经存在则不重复添加。例如:{ $addToSet: { 字段名: 值 } }
。$push
:用于向数组字段中添加元素。例如:{ $push: { 字段名: 值 } }
。$pull
:用于从数组字段中删除指定的元素。例如:{ $pull: { 字段名: 值 } }
。$pop
:用于从数组字段中删除第一个或最后一个元素。例如:{ $pop: { 字段名: 1 } }
(删除最后一个元素)。
更多推荐
已为社区贡献1条内容
所有评论(0)