Mongodb自动为新集合创建索引

时间:2015-08-13 14:53:50

标签: node.js mongodb

我有一个带有Mondodb数据库的Node.JS服务器。多个客户端使用同一个数据库,每个客户端都有自己的集合。集合由客户端的id命名。

由于每个客户端都为其数据使用不同的名称,因此当新客户端连接到服务器时,他对数据库执行的第一个操作将为他创建一个新集合。

我需要所有集合都有一个特定的索引。有没有办法为每个新集合自动创建此索引?

1 个答案:

答案 0 :(得分:13)

不,没有这样的命令。

但是不要害怕经常拨打createIndexThe documentation保证当已存在具有相同设置的索引时,不会发生任何事情。因此,您可以将其附加到新用户执行的一些常见数据库操作中。当不止一次被召唤时,这没什么大不了的。

要突出显示此行为,该方法曾被称为ensureIndex,但该名称已弃用。

顺便说一下:为每个客户提供不同的集合是一个非常不寻常的架构。它有一些缺点,比如你已经发现的索引和其他集合级配置的问题,还有一些缺点,比如无法进行任何使用来自多个客户端的数据的查询。使用默认存储引擎,优点是客户端无法使用集合范围锁进行锁定,但是当您使用WiredTiger引擎时,由于WiredTiger仅在文档级别锁定,因此该优势已过时。

更传统的方法是为所有用户提供一个集合,并在每个文档中都有一个字段,说明哪个用户拥有该文档,哪个用户特定查询使用的所有索引的一部分。