我在mongo中有一个名为“activities”的集合,每个activity都有一个users
字段,它是一个对象数组,包含userId
和一个scores
对象。我只想将列表中不存在于users
数组中且具有默认scores
值的用户添加到users
字段,因此我将不覆盖现有用户的scores
。
假设该练习具有以下users
数组:
[{ userId: 1, scores: { failures: 2, wins: 4 } },
{ userId: 2, scores: { failures: 0, wins: 2 } }]
userIds数组为[2,3],默认分数为{ failures: 0, wins: 0 }
,则结果应为
[{ userId: 1, scores: { failures: 2, wins: 4 } },
{ userId: 2, scores: { failures: 0, wins: 2 } },
{ userId: 3, scores: { failures: 0, wins: 0 } }]
只有userId 3应添加为默认值scores
,因为userId 2已存在。
1条答案
按热度按时间lokaqttq1#
使用流水线更新和$reduce,
Demo