猫鼬,推或更新数组中的值

时间:2020-10-15 11:12:56

标签: javascript node.js mongodb mongoose

由于我是mongo的新手,因此我不太确定如何解决此问题。我的架构(为简单起见,将其简化了)如下所示:

const serversSchema = new Schema({
  serverId: String,
  stats: {
    type: Array,
    day: {
      date: { type: String, default: new Date().toISOString().substring(0, 10) },
      users: {
        type: Array,
        default: {
          id: { type: String },
          messageCount: { type: Number, default: 0 },
          reactionCount: { type: Number, default: 0 },
        },
      },
    },
  },
})

其背后的想法是,当用户在服务器中发送消息时,我可以在特定日期插入或添加到他们的messageCount和ReactionsCount中。这样的示例如下:

server: {
  stats: [
    {
      date: "2020-10-15",
      users: [
        {
          id: 'user1',
          messageCount: 5,
          reactionCount: 2,
        },
        {
          id: 'user2',
          messageCount: 15,
          reactionCount: 6,
        },
      ]
    },
    {
      date: "2020-10-16",
      users: [
        {
          id: 'user1',
          messageCount: 2,
          reactionCount: 2,
        },
        {
          id: 'user2',
          messageCount: 5,
          reactionCount: 3,
        },
      ]
    },
  ]
}

现在,我认为,该架构对我要执行的操作是正确的(如果我输入错了,请更正我)。我的问题是如何实现这一目标。我希望能够使用某个函数来递增messageCountreactionCount,或者插入当前dayt中没有针对特定用户的条目的情况。大概我需要updateOne进行upsert吗?但是我需要先阅读server->day->user才能增加或插入(如果不存在的话)?

0 个答案:

没有答案