首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >防止updatedAt在猫鼬findOneAndUpdate中的变化

防止updatedAt在猫鼬findOneAndUpdate中的变化
EN

Stack Overflow用户
提问于 2019-02-15 13:19:02
回答 2查看 4.7K关注 0票数 17

我更新了Mongoose模型,然后使用实现简单视图计数器的$inc操作符检索:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const profile = await Profile.findOneAndUpdate({ userName }, { $inc: { viewsCount: 1 } });

Profile架构启用了timestamps选项。问题是updatedAt是在viewsCount更新期间更新的,这不是一种理想的行为。

我希望在更新updatedAt时禁用viewsCount更新,最好是尽可能少地执行查询。

我假设猫鼬时间戳是用预挂钩实现的。

findOneAndUpdate如何在不更新updatedAt的情况下增加viewsCount

这能通过否定时间戳挂钩的效果来实现吗?

有一些类似的问题可以解决updatedAt更新的问题,但是解决方案并不适合这种情况。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-14 12:48:01

猫鼬5.9.3开始,您可以将第三个参数设置为{ timestamps: false }

来自文档

如果已启用options.timestamps=null布尔值,则跳过此更新的时间戳。请注意,这允许您覆盖时间戳。如果没有设置架构级时间戳,则不执行任何操作。

票数 18
EN

Stack Overflow用户

发布于 2019-02-19 10:44:04

在浏览了Mongoose文档之后,简单的回答似乎是“否”,如果没有设置findOneAndUpdate()字段,就无法调用updatedAt。如果您查看docs 这里,它会清楚地声明所有用于更新的函数(findOneAndUpdate()、update()和bulkWrite())都将$set操作符添加到查询中以设置updatedAt。话虽如此,你确实有另一种选择,我强烈建议。

围绕着工作

将createdAt和updatedAt字段直接添加到模型中,并去掉时间戳。当然,为您处理它真的很好,但是最后,如果您必须尝试为特定的用例更改时间戳的集合功能,那么最好自己来做。

如果您喜欢在调用updatedAt或.update()时设置.save().update(),则始终可以编写自己的中间件来添加操作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ProfileSchema.pre('save', function(next) {
  this.createdAt = Date.now();
  this.updatedAt = Date.now();
  next();
});

我知道这不是想要的解决方案,但坦率地说,我发现它更有用,因为有更大的控制,更少意外的行为从猫鼬。您对自己代码的控制越多,越好。希望这能有所帮助!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54717199

复制
相关文章
LeetCode 1262. 可被三整除的最大和(DP)
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/greatest-sum-divisible-by-three 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Michael阿明
2020/07/13
6240
LeetCode 1262. 可被三整除的最大和(DP)
LeetCode 1015. 可被 K 整除的最小整数(数学)
1. 题目 给定正整数 K,你需要找出可以被 K 整除的、仅包含数字 1 的最小正整数 N。 返回 N 的长度。如果不存在这样的 N,就返回 -1。 示例 1: 输入:1 输出:1 解释:最小的答案是 N = 1,其长度为 1。 示例 2: 输入:2 输出:-1 解释:不存在可被 2 整除的正整数 N 。 示例 3: 输入:3 输出:3 解释:最小的答案是 N = 111,其长度为 3。 提示: 1 <= K <= 10^5 来源:力扣(LeetCode) 链接:https://leetcode-
Michael阿明
2020/07/13
9400
LeetCode 1018. 可被 5 整除的二进制前缀
给定由若干 0 和 1 组成的数组 A。 我们定义 N_i:从 A[0] 到 A[i] 的第 i 个子数组被解释为一个二进制数(从最高有效位到最低有效位)。
Michael阿明
2020/07/13
3310
LeetCode 974. 和可被 K 整除的子数组(哈希map)
给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。
Michael阿明
2020/07/13
6140
Leetcode 1010. 总持续时间可被 60 整除的歌曲
返回其总持续时间(以秒为单位)可被 60 整除的歌曲对的数量。形式上,我们希望索引的数字 i < j 且有 (time[i] + time[j]) % 60 == 0。
zhipingChen
2020/01/02
5700
LeetCode刷题DAY 25:和可被 K 整除的子数组
给定一个整数数组A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。如输入
三猫
2020/06/02
4500
LeetCode 1010. 总持续时间可被 60 整除的歌曲(哈希)
返回其总持续时间(以秒为单位)可被 60 整除的歌曲对的数量。形式上,我们希望索引的数字 i < j 且有 (time[i] + time[j]) % 60 == 0。
Michael阿明
2020/07/13
5760
LeetCode 1010. 总持续时间可被 60 整除的歌曲(哈希)
整除的尾数_整除数
一个整数,只知道前几位,不知道末二位,被另一个整数除尽了,那么该数的末二位该是什么呢?
全栈程序员站长
2022/11/15
6950
力扣刷题笔记--6220. 可被三整除的偶数的平均值
给你一个由正整数组成的整数数组 nums ,返回其中可被 3 整除的所有偶数的平均值。
C_H
2022/11/15
2320
整除的尾数(整除问题) - HDU 2099
最近在写POJ 2449,暂时还没写完,目前上卷的题目基本都涉及到了,后面会接着加强,特别是动态规划方面的题目,因为比较灵活也比较难。
ACM算法日常
2018/08/07
9280
整除的尾数(整除问题) - HDU 2099
ABC的整除问题
给定三个非负整数 A,B,C,且保证 A\le B,C\ne 0,求在区间 [A, B] 中,存在多少个整数可以被 C 整除?
浪漫主义狗
2023/03/01
2.3K0
Python中的整除
#这是浮点除法, 得到的结果是浮点数(float) var = 3/2 #得到的结果是整数1, 这是整除类似于某些编程语言的"\" var = 3//2 #这是四舍五入 var1 = round(3/2) #结果为2 var2 = round(2.8/2) #结果为1 import math var = 3/2 var = math.floor(var) #结果为1, 这个floor函数意思是取得小于等于这个数的整数
py3study
2020/01/10
1.6K0
整除计算器_0 整除
这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。
全栈程序员站长
2022/09/22
7180
python整除和取余写法_Python的整除和取余[通俗易懂]
参考:https://blog.csdn.net/sun___M/article/details/83142126
全栈程序员站长
2022/09/01
1.8K0
[每日一题]数字整除
C语言的奇葩之一就是明明可以直接除以17解决的问题偏偏要搞得这么麻烦 但我们能有什么办法呢,只能说是对思想的锻炼了呗! 题目描述 定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的5倍。当且仅当差是17的倍数时,原数也是17的倍数 。 例如,34是17的倍数,因为3-20=-17是17的倍数;201不是17的倍数,因为20-5=15不是17的倍数。输入一个正整数n,你的任务是判断它是否是17的倍数。 输入 输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<
编程范 源代码公司
2018/04/18
1.1K0
整除个数
1、2、3… …n这n(0<n<=1000000000)个数中有多少个数可以被正整数b整除。
书童小二
2018/09/03
7190
HDOJ 2099 整除的尾数
Problem Description 一个整数,只知道前几位,不知道末二位,被另一个整数除尽了,那么该数的末二位该是什么呢?
谙忆
2021/01/20
5800
基于逻辑规则的图谱推理
导读: 近年来,知识图谱在众多行业场景被大量应用,例如推荐、医疗。为了构造尽可能完备的图谱,知识图谱的推理工作也成为学术届和工业界的一个重要研究课题。来自Mila人工智能实验室的瞿锰博士,给大家分享了他们在图谱推理任务方向的一个研究:基于逻辑规则的图谱推理(RNNLogic: Learning Logic Rules for Reasoning on Knowledge Graphs),研究结果显示RNNLogic可以很好地兼顾图谱推理任务的模型效果和可解释性的问题。
DataFunTalk
2022/05/02
1.5K0
整除分块思想
对于求形如 \(\sum_{i=1}^{n}\lfloor\frac{n}{i}\rfloor\) 的值,就需要用到整除分块,否则当n很大时就会超时。在普通的一个一个的计算时可以发现很多\(\lfloor\frac{n}{i}\rfloor\)的值成块状分布,最终的到的规律是发现对于每一个值相同的块,它的最后一个数就是n/(n/i)
_DIY
2019/08/23
9300
点击加载更多

相似问题

可被2整除: Python

53

关于:a的个数可被6整除,b的数目可被8整除

16

递归法计算可被2整除的元素

120

可被2整除的数字计数器

35

生成可被2整除的随机数

50
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文