Php MongoDB:ensureIndex在单键和复合键上都不工作

Php MongoDB:ensureIndex在单键和复合键上都不工作,php,indexing,mongodb,batch-processing,unique-index,Php,Indexing,Mongodb,Batch Processing,Unique Index,从我尝试在本地设置的MongoDB集合中添加批量数据的小时起,除了一个键或多个键的唯一索引外,所有数据都已设置:( 我用过这个: ensureIndex({appid:1, userid:1}, {unique:true, dropDups:true, background:true}) 然后是这个(因为我想无论出于什么原因,多键索引都不起作用) 在使用上述行之后,我尝试从php脚本中插入数百万行(通过insert和BATCHSERT),每次都有重复的用户ID:'(请指导我:(最好查看并确保索

从我尝试在本地设置的MongoDB集合中添加批量数据的小时起,除了一个键或多个键的唯一索引外,所有数据都已设置:(

我用过这个:

ensureIndex({appid:1, userid:1}, {unique:true, dropDups:true, background:true})
然后是这个(因为我想无论出于什么原因,多键索引都不起作用)


在使用上述行之后,我尝试从php脚本中插入数百万行(通过insert和BATCHSERT),每次都有重复的用户ID:'(请指导我:(

最好查看并确保索引已创建。默认情况下,写入操作(如创建索引)启动并忘记,不要等待错误/成功。这可能是驱动程序(php客户端库)中的错误

你可以跑

db.coll.getIndexes()

列出集合的索引。

最好查看并确保索引已创建。默认情况下,写入操作(如创建索引)是启动并忘记,不要等待错误/成功。这可能是驱动程序(php客户端库)中的错误

你可以跑

db.coll.getIndexes()

列出集合的索引。

我注意到ensureIndex不会覆盖现有索引。相反,我认为您必须先删除现有索引,然后运行ensureIndex。

我注意到ensureIndex不会覆盖现有索引。相反,我认为您必须先删除现有索引,然后运行ensureIndex运行ensureIndex。

我的想法完全相同,它的coz ov PHP客户端,coz at命令行索引正在正确创建,并且在重复项上也会抛出错误,但这里又是dropDups的一个神秘属性……如果它不处理重复项并根据定义删除它们,那么这个属性的用途是什么?奇怪事情:-)顺便说一句,我使用的是RockMongo,所以在插入记录的同时我可以看到索引的创建(在我的例子中),但它们不适用于重复项…我的想法完全相同,它的coz ov PHP客户端,coz at命令行索引正在正确创建,并且在重复项上也会抛出错误,但这里又是dropDups的一个神秘属性…如果它不处理重复项并根据e定义?奇怪的事情:-)顺便说一句,我使用的是RockMongo,所以在插入记录的同时我可以看到索引的创建(在我的例子中),但它们不适用于重复项…嗨!你最终成功了吗?我有同样的问题,或者至少我认为。但是,我可以通过在运行Mongo控制台管理时设置
background:true
来强制执行索引。你试过了吗?嗨!你最终成功了吗?我有同样的问题,或者我想至少是这样。不过,我可以通过在运行Mongo控制台管理时设置
background:true
来强制执行索引。您尝试过吗?