已解决
数据举例:
{
showDay:3,
updateDate:Tue Jan 19 2021 08:00:01 GMT+0800 (中国标准时间)
flag:1
}
需求:
showDay 大于等于 (现在时间减去updateDate除以86400000)的数据,flag更新为0。
问题:
.where中使用$.divide([($.subtract([currentTime, '$updateDate'])),86400000])无效。
代码:
.where({
showDay:_.gte($.divide([($.subtract([currentTime,'$updateDate'])),86400000]))
})
是因为$.是在聚合阶段使用的原因吗?
但如果.aggregate()后如何update呢?
试了很久都没有成功,特来求助。
感谢各位。
----------------------------
有时候思路会陷入自己的预设,不能break。
为什么一定要在aggregate以后update呢?它本身就不是update的前置条件呀。
所以一定是在update之前筛选出数据,而不是聚合数据。
所以,如下:
.where(
_.expr(
$.eq(["$goodsFlag","1"]),
$.gte([("$showDay"),($.divide([($.subtract([currentTime,'$updateDate'])),86400000]))])
)
)
昨天夜里脑子短路了,然后一直不能复位。
然后今天用了2分钟,看了一下文档关于command的内容。
expr闪闪亮…
.where(
_.expr(
$.neq(["$_id","000_testGoodsId"]),
$.eq(["$goodsFlag","1"]),
$.gte([("$showDay"),($.divide([($.subtract([currentTime,'$updateDate'])),86400000]))])
)
)
完成。
where和$不会并存在一条语句里。
将$换成_吧,对应的,换成command批令集而不是aggregate指令集。
aggregate无法update。