MongoDB:ensureIndex 不适用于单键和复合键
从几个小时开始,我试图在本地设置的 MongoDB 集合中添加批量数据,除了一个或多个键的唯一索引之外,所有数据均已设置:(
我已经使用了这个:
ensureIndex({appid:1, userid:1}, {unique:true, dropDups:true, background:true})
那么这个(因为我猜出于某种原因,多个键索引是不工作)
ensureIndex({userid:1}, {unique:true, dropDups:true, background:true})
使用上面的行后,我尝试从 php 脚本插入数百万行(通过 insert 和 batchInsert)并且每次都存在重复的用户 ID :'( 请指导我:(
From hours I'm trying to add bulk data in my locally setup MongoDB collection, all is set except unique index for a key or keys :(
I've used this:
ensureIndex({appid:1, userid:1}, {unique:true, dropDups:true, background:true})
then this (coz I guess for whatever reason, multiple keys index is not working)
ensureIndex({userid:1}, {unique:true, dropDups:true, background:true})
after using above lines I tried to insert millions of rows from a php script (via both insert and batchInsert) and everytime duplicate userids are there :'( please please guide me on this :(
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我注意到 EnsureIndex 不会覆盖现有索引。相反,我相信您必须首先删除现有索引,然后运行 EnsureIndex。
I have noticed that ensureIndex will not overwrite an existing index. Instead, I believe you must first delete the existing index and THEN run ensureIndex.
查看并确保索引已创建可能是个好主意。默认情况下,写入操作(如创建索引)是即发即忘的,不会等待错误/成功。这可能是驱动程序(php 客户端库)中的错误。
您可以运行
以列出集合的索引。
It is probably a good idea to look and make sure the index was created. By default write operations (like creating indexes) are fire-and-forget and don't wait for error/success. This could be a bug in the driver (php client lib).
You can run
to list the indexes for the collection.