更新记录

1.3.0(2022-04-16)

新增通过配置remote参数来直接操作远程Mongodb数据库

1.2.3(2022-04-16)

错误提示更新和绑定订阅源的例子

1.2.2(2021-12-31)

文档更新失败问题的修复

查看更多

平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.1.0 app-vue app-nvue
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari

hj-mongo

1. 选择操作

$and $or $nor $where - 逻辑运算符

-- 值判断运算符

string:_id
Function=>boolean,自定义过滤函数;
其它支持的Mongodb操作符
$in :[v1,v2]; //中一个则选中
$nin:上面的那个反义词
$all:[v1,v2]  //全中则选中
$lt: number/Date 
$lte: 小于等于
$gt: 大于
$gte:大于等于
$ne:不等于
$exists:{key:1}key字段存在
$mod:[除数,余数] 值取模等于余数
$size: number 数组的长度
$regex: 字段值正则匹配,用的test
$elemMatch: 字段数组的元素有个满足条件的就选中
$not:结合其他用,取反
$near:{center:number,radius} 选中中心点附近的,简单球运算

2. 修改操作

直接给个字面量对象,则是替换_id一样的数据
支持的Mongo操作符包括:
$currentDate 当前时间 new Date
$min: 字段最小为某个值
$max: 字段最大为某个值
$mul:字段值倍乘
$rename:{key1:key2} 字段名重写
$set:不是替换只更新值
$unset:{key:1}删了那个key属性
$push:{key:val} push到数组中间去,不存在则新建一个数组 [val]
$pushAll:多个push,
$addToSet: 将不存在数组的值加进去
$pop:pop数组值的最后一个
$pull:{key:val}将数组中值等于val的删了
$pullAll:一次删一群

3. 集合钩子 - insert/update/remove/query

before 在操作之前

after 在操作之后

简单的例子- 可以跑一跑demo:

import { useLocalMongo } from "./uni_modules/hj-mongo/js_sdk";
<!-- 本地内存数据库 -->
const db = useLocalMongo("test");
<!-- 绑定远程的ddp订阅 -->
const db = useLocalMongo("test",ddp /* 利用hj-ddp创建的ddp客户端*/);
const Users = db.collection("users");
console.log(Users);

Users.before.insert = (...args) => {
  console.log(`before`);
  console.log(args);
};
Users.after.insert = (...args) => {
  console.log(`after`);
  console.log(args);
};
Users.before.update = (...args) => {
  console.log(`before change`);
  console.log(args);
};
Users.after.update = (...args) => {
  console.log(`after change`);
  console.log(args);
};
Users.before.remove = (...args) => {
  console.log(`before remove`);
  console.log(args);
};
Users.after.remove = (...args) => {
  console.log(`after remove`);
  console.log(args);
};
Users.before.query = (...args) => {
  console.log(`before query`);
  console.log(args);
};
Users.after.query = (...args) => {
  console.log(`after query`);
  console.log(args);
};
console.log(Users);

Users.insert({ _id: 1, a: 1 });

Users.findOne({ a: 1 });

Users.upsert({ _id: 1 }, { $set: { b: 1 } });

Users.remove({ _id: 1 });
<!-- 直接向数据库插入数据 ,需要server端配置allow校验文档增删改权限-->
<!-- 没有_id默认会认为是发送文档插入请求 -->
Users.insert({ _id: 1, a: 1 },{remote:1}); // 或者不给_id,
<!-- 设置remote才会进行远程文档插入操作, update/upsert需要传入multi更新多个文档 -->
Users.upsert({ _id: 1 }, { $set: { b: 1,_id:1 } },{remote:1,multi:1});
Users.update({ _id: 1 }, { $set: { b: 1 } },{remote:1});
<!-- 远程的删除操作只能指定_id进行单个操作,以防错误的query造成较大影响 -->
Users.remove({ _id: 1 },{remote:1});

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问