猫鼬:更新许多文档,这些文档按数组字段中的对象值进行过滤

时间:2019-10-22 09:31:03

标签: node.js mongodb mongoose

使用mongoose@5.6.11

我的硬币对象有15万个数组

[{ 
 username:string, 
 coin:{ date:number, id:string }
}]

然后为数组中的每个硬币使用此功能检查user.coins数组中是否存在硬币,然后如果不存在则按入硬币

export const coinsUpdateOrCreate = async( user ) => await User.findOneAndUpdate(
    {
        "username": user.username,
        "coins":  {
            "$ne": { id: user.coin.id } } 
        },
    {
        "$addToSet": {
            "coins": {
                id: user.coin.id,
                date: user.coin.date
            }
        }

    },
    { "new": true }
);

用户:mongooseModel

username:String,
coins:[{ date: Number, id: String }]

带循环的15万个硬币阵列非常慢

如何通过一个查询(如updateMany或bulkWrite)插入现有支票来插入所有硬币:

1:用户,按用户名过滤(如果不存在则创建)

2:user.coins数组中的coin.id(如果不存在,则按入);

感谢任何想法

0 个答案:

没有答案