【问题标题】:Meteor mongo insert unique documentMeteor mongo 插入唯一文档
【发布时间】:2014-08-02 04:45:15
【问题描述】:

我在 Meteor 中有一个简单的标签集合。目前为了确保用户不能创建重复的标签文档,我这样做:

var existingTag = Tags.findOne({name: "userInput"})

如果existingTag 未定义,那么我可以继续插入。

有没有更好/正确的方法来使用流星 mongodb 语法?似乎找不到任何关于此的文档。

谢谢。

【问题讨论】:

    标签: javascript mongodb meteor


    【解决方案1】:

    一个好的解决方案是在唯一字段创建 Mongo 索引。这样您就可以在 Mongo 级别进行唯一性验证,并提高该字段的搜索性能。

    Meteor 目前不支持直接创建索引,因此您需要手动登录数据库并从那里添加索引。这个命令是:

    db.tags.ensureIndex({name: 1}, {unique: true})
    

    Herehere 你可以找到更多信息。

    【讨论】:

    • 实际上,我认为您可以使用 Tags._ensureIndex('name', {unique: true}) 添加来自流星的索引,但该接口显然会发生变化。我一直都是直接从 mongo 做的。
    • 谢谢,我希望在 Rails find_or_create_by_name 中得到类似的东西,但这会起作用:-)。
    • Meteor 确实包含类似于find_or_create_by_name 的内容。它被称为Upsert - docs.meteor.com/api/collections.html#Mongo-Collection-upsert
    • @AyrtonSenna 至于upsert 的事情,是的,但是.. 这对客户来说是不行的。 See this posting.在客户端,你可以创建一个varFind = myCollection.findOne...如果varFind存在,则update,否则insert
    猜你喜欢
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 2016-05-15
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多