MongoDB:ensureIndex 不适用于单键和复合键

发布于 2024-10-03 14:29:19 字数 410 浏览 6 评论 0原文

从几个小时开始,我试图在本地设置的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

探春 2024-10-10 14:29:20

我注意到 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.

淤浪 2024-10-10 14:29:20

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

您可以运行

db.coll.getIndexes()

以列出集合的索引。

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

db.coll.getIndexes()

to list the indexes for the collection.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文