如何在MongoDB中为用户存储大量的消息

How to store large amount of messages for users in MongoDB?

本文关键字:存储 消息 用户 MongoDB      更新时间:2023-09-26

我需要运行我的cron脚本来为每个用户更新/插入(upsert)线程(电子邮件)。我有一个结构如下的集合:

{ 
    "id" : ObjectId("57d7fc5fd34228c47059"), 
    "id" : "userid", 
    "primaryEmail" : "user@mail.com", 
    "threads_list" : [
    ]
},
{ 
    "_id" : ObjectId("57d7346a73d128c47059"), 
    "id" : "uderid", 
    "primaryEmail" : "user2@mail.com", 
    "threads_list" : [
    ]
}
...

我想把线程存储到threads_list。但是,如果它们已经存在,我也想更新它们,或者如果自上次更新以来没有更改,就跳过它,就像我为每个用户创建集合并使用具有{upsert:true}参数的updateOne方法更新存储在里面的电子邮件一样。

如果需要,我不介意将threads_list属性更改为对象类型。

如何正确地完成?

试试这个代码

db.collection('users').update(
          { _id:user.id, 
            $set: {'primaryEmail': newEmail} 
          },
          { $addToSet: { 'threads_list': { $each: resp.labels } } }
        );