猫鼬独特日期(没有时间)每个文件

时间:2017-05-29 14:27:47

标签: node.js mongodb express mongoose

我正在努力将一些用户分析数据手动合并到一个应用程序中,我需要确保每个guid每天只捕获一次数据。也就是说,我需要确保对于给定的guid,只有在该DATE尚未创建新文档/条目时才会创建新文档/条目。

我能想到的方法(非最佳,IMO):

  1. 每次请求进来时我都可以手动执行查询。但是这样 是昂贵的,我担心这种方法可能会影响性能。
  2. 我可以让它确保唯一的createdAt时间戳,但那是一个 日期+时间格式,并不会将条目限制为每天一个(相反 每毫秒一个或一些)。
  3. Mongoose似乎有内置的时间戳功能,但我有 尚未在Mongoose或Mongo中找到一个简单的烘焙解决方案 确保仅限日期的唯一性。
  4. 我可以在执行保存之前使用聚合器,但这需要很多开销 - 需要使用$ lt& amp; $ gt,然后在该结果之后,可能保存新条目。这是每个请求的两个数据库交互。这是最接近的answer I've found on StackOverflow
  5. 我可以在Schema中创建一个单独的字段,仅限日期(没时间),但这似乎有点多余,因为我已经有了一个createdAt时间戳。
  6. 希望有一个更清洁的&更加高效的方法,确保每个日期一个独特的guid ......

    哦,架构目前看起来像这样(注意:timestamps: true在数据库中创建createdAt& updatedAt时间戳,并使用ISO日期自动填充它们:

    var Schema = new Schema({
        guid:             { type: String, required: true },
        targetCategory:   { type: String, required: true },  
        targetIdentifier: { type: String, required: true },  
        targetType:       { type: String, default:  null }, 
        interactorUserId: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
      },
      { timestamps: true });
    

    非常感谢!

0 个答案:

没有答案