我正试图在meteor应用程序中创建一个两列的唯一索引,但遇到了麻烦.我在Meteor 文件里什么都找不到.我在chrome控制台上试过.我从一开始就try 过,甚至试图将mongod指向内部的/db/dir.Meteor 我试过了

Collection.ensureIndex({first_id: 1, another_id: 1}, {unique: true});种变体.

我希望能够防止在meteor应用程序mongo collection上出现重复条目.

想知道是否有人发现了这一点?

我回答了自己的问题,真是个傻瓜.

我想出来了.

  1. 启动meteor服务器

  2. 打开第二个端子并键入meteor mongo

然后创建索引...例如,我为thumbsup和thumbsdown类型系统的记录做了这些.

db.thumbsup.ensureIndex({item_id: 1, user_id: 1}, {unique: true})
db.thumbsdown.ensureIndex({item_id: 1, user_id: 1}, {unique: true})

现在,只需要找出一个 bootstrap 安装程序,当推到prod而不是手动时创建这些.

推荐答案

根据docs"Minimongo目前没有索引.这很快就会出现."从一个集合中可用的方法来看,没有ensureIndex.

可以为mongo shell运行meteor mongo并在服务器端启用索引,但Collection对象仍然不知道这些索引.因此,应用程序将允许您向集合缓存中添加多个实例,而在服务器端,额外的插入将以静默方式失败(错误写入输出).当你进行硬页面刷新时,应用程序将与服务器重新同步

所以现在你最好的 Select 可能是:

var count = MyCollection.find({first_id: 'foo', another_id: 'bar'}).count()
if (count === 0)
    MyCollection.insert({first_id: 'foo', another_id: 'bar'});

这显然不理想,但效果不错.您还可以在服务器上的mongodb中启用索引,这样即使在竞争条件下,您也不会得到重复的记录.

Mongodb相关问答推荐

为什么 mongoose 在 mongodb 中找不到我的数据

Mongo,通过 Lookup 计算多个文档中数组中的项目

使用Go的Mongo驱动程序,从MongoDB文档中获取元素并更新其值需要帮助

spring-data-mongodb 上的 TopN 聚合

如何判断 mongodb 聚合,该文档具有键,该键是一个数组,其第二个元素是否存在?

仅当特定字段存在于 MongoDB 中时才更新它

MongoDB:从开始日期和结束日期数组中匹配特定日期的聚合查询

如何修改 mongodb 中嵌套对象数组中的字段名称/键?

如何将以下聚合查询转换为 bson 并在 golang 中执行

使用名为 Object 键的 uuid 创建 mongodb 文档

MongoDB - 文档中多个数组大小的总和

mongo.lock 文件有什么用?

在一个变量上运行的 Node JS 中使用正则表达式的 Mongo 查询

.NET 4 中是否有 mongodb C# 驱动程序支持 System.Dynamic.DynamicObject?

如何在 Ruby on Rails 环境中使用 Mongoid 进行通配符搜索?

启动mongodb和express的正确方法?

MongoDB 3 Java判断集合是否存在

Mongoose 不创建新集合

如何在 golang 和 mongodb 中通过 id 查找

MongoDB Compass:select distinct field values