1

我正在为我的应用程序添加标签支持,并计划为我的标签创建一个单独的集合并生成我自己的 _id 值。我的计划是从用户输入的标签形成_id(例如,用户输入“计算机科学”的_id 为“计算机科学”)。我形成自己的 _id 的理由是 _id 强制唯一性,因此没有重复的插入会立即发生,而有重复的插入会产生可以处理的错误。如果这不是提高性能的好方法,请告诉我另一种方法。

假设以上是一个好方法......

是否建议在不检查具有相同 _id 的文档是否已经存在的情况下对集合执行插入操作 - 允许在重复的情况下发生重复错误?如果是这样,应该如何处理错误?在 collection.insert 回调函数中?

任何显示推荐模式的示例代码都会非常有帮助。

我猜在插入之前是否检查重复项的建议可能取决于随着时间的推移预期重复项的频率。

4

1 回答 1

0

Meteor 自动为每个集合添加 _id 值,这些 _id 都是不同的。您不应该提供 _id 字段,它将自动添加。

如果您想提供自己的自动增量 id 字段,可以使用getNextSequence(),如mongo 文档中所述。

编辑 创建不同的值应该不是问题,您应该能够:

CollectionName._ensureIndex('tag-id', {unique: 1, sparse: 1});
CollectionName.insert(data, function(err, id) {
  //err should contain any duplication errors.
});

或者,您可以创建一个 addTag 方法,在添加之前检查标签是否已经存在。

于 2013-10-08T18:22:30.860 回答