我正在为我的应用添加标记支持,并计划为我的代码添加一个单独的集合并生成我自己的_id值。我的计划是从用户输入的标签形成_id(例如,用户输入“计算机科学”将具有“计算机科学”的_id)。我构建自己的_id的原因是_id强制执行唯一性,因此不带重复的插入会立即发生,而具有重复的插入会产生可以处理的错误。如果这不是一个好的性能方法,请告诉我一种替代方法。
假设以上是一个很好的方法......
是否建议对集合执行插入操作,而不检查具有相同_id的文档是否已经退出 - 允许在重复的情况下发生重复错误?如果是这样,应该如何处理错误?在collection.insert回调函数中?
显示推荐模式的任何示例代码都非常有用。
我想在插入之前是否检查是否检查重复的建议可能取决于预期重复的频率。
答案 0 :(得分:0)
Meteor会自动为每个集合添加_id值,这些_id都是不同的。您不应该提供_id字段,它将自动添加。
如果您想提供自己的自动增量ID字段,可以使用getNextSequence()
,如mongo documentation中所述。
修改强> 创建不同的值应该不是问题,您应该能够:
CollectionName._ensureIndex('tag-id', {unique: 1, sparse: 1});
CollectionName.insert(data, function(err, id) {
//err should contain any duplication errors.
});
或者,您可以创建一个addTag方法,只需在添加标记之前检查标记是否已存在。