mongo 如何对比一个文档的更改?

2021-08-09 19:08:09 +08:00
 ztoben
各位大佬,mongo 如何对比一个文档改了哪些字端?更改了哪些值?
比如 a = {'name': 'zz', 'age': 18, 'scope': [1,2,3]}
更改为了 a = {'name': 'zzz', 'age': 28, 'scope': [4,5,6]}
如何接口判断到哪个值变换了
1610 次点击
所在节点    Python
7 条回复
SorcererXW
2021-08-09 19:10:23 +08:00
findOneAndUpdate({},{},{returnNewDocument:false}) 取出旧值再对比
kyuuseiryuu
2021-08-09 21:38:17 +08:00
function getChangedFields(oldObj, newObj): string[] {
--const changedFields: string[] = [];
--Object.keys(newObj).forEach(k => {
----if (newObj[k].toString() != oldObj[k].toString()) {
------changedFields.push(k);
----}
--});
--return changedFields;
}
ztoben
2021-08-10 11:03:56 +08:00
@SorcererXW 其实我的意思是有没有什么第三方的包或者通用的方法来判断他哪些字端的变更,比如 java 的 ObjectDiff
crclz
2021-08-11 00:31:11 +08:00
可以 Replace (全量更新)
strict
2021-08-13 15:11:57 +08:00
db.coll.findAndModify()可以拿到原 json
python 通过 jsondiff 去作比较
ztoben
2021-08-13 19:56:31 +08:00
@strict jsondiff 我去看看这个包 感谢
ztoben
2021-08-13 19:57:21 +08:00
@crclz 最主要不是更新 是记录他发生过的变化 从 a 变到 b 列表从空变到有值

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/794705

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX