CNode

mongodb更新内嵌数组的问题,只能用循环来处理吗

问答
Ddengnan123发布于9 年前最后回复9 年前6 回复4797 浏览0 收藏

image.png 数据结构如上,更新的条件是yoocare_id,yoocare_info是一个数组,符合条件的yoocare_id可能有多个,需要把符合条件的residue_degree更新掉,现在我用的方法比较笨,先找到yoocare_info这个数组,然后用map循环,符合yoocare_id的,处理下residue_degree,最后拿到一个全新的yoocare_info数组,最后把数组更新掉,这种方法数量小的话,还能用数据量大的话,速度岂不是要爆炸。。。。

求老哥们指点

查看回复

回复 (6)

S
Studying-Man#1·9 年前

thisDocument.yoocare_info[1].residue_degree = 2; thisDocument.markModified('residue_degree'); // markModified 标记下修改的字段名字 thisDocument.save();

D
dengnan123#2·9 年前
S
Studying-Man#3·9 年前
引用 dengnan123@Studying Man 没看懂啊 老哥,能不能稍微解释下 嘿嘿

@dengnan123 你用mongoose没, thisDocument 是你当前这个文档对象, thisDocument.yoocare_info[1].residue_degree = 2; 假如现在把yoocare_info中第二个的residue_degree修改为2,然后保存这个修改,往往我们直接会调用thisDocument.save(),但是会不起作用,所哟先告诉mongo我们对那个字段进行了修改,thisDocument.markModified(‘residue_degree’); // markModified 标记下修改的字段名字最后再 thisDocument.save();

D
dengnan123#4·9 年前
引用 Studying-Man@dengnan123 你用mongoose没, thisDocument 是你当前这个文档对象, thisDocument.yoocare info[1].residue degree = ...

@Studying-Man 老哥你 mongodb 本地的有没有升级到3.6,有没有看到官网这么例子image.png

Q
qiu363#5·9 年前

yoocare_info.yoocare_id 用这个当条件呢,这种数据结构分两个表是不是比较好点

L
liuqipeng417#6·9 年前
引用 dengnan123@Studying Man 老哥你 mongodb 本地的有没有升级到3.6,有没有看到官网这么例子

@dengnan123 这个方式就可以解决你的需求了

db.devices.update({ 'yoocare_info.yoocare_id': 'abc123' }, { $set: { 'yoocare_info.$.residue_degree': '1' } }, { multi: true })

参与回复
登录后即可参与回复。登录