使用node.js和mongodb时调用createIndex函数的位置,时间和次数

时间:2018-03-25 11:16:12

标签: node.js mongodb

每次数据库连接时都应该调用createIndex()函数,如教程http://mongodb.github.io/node-mongodb-native/2.1/tutorials/geospatial-search/中给出的那样 如果使用地理空间索引,我是否每次都需要调用该函数?

2 个答案:

答案 0 :(得分:1)

根据docs

  

如果同一规范的索引尚不存在,则createIndex()方法仅创建索引。

这也适用于地理空间索引。

关于在何处执行此操作,因为您只需要执行一次,因此通常不必在应用服务器代码中包含此操作。

我可以想到关于如何执行它的两个选项:

  • 使用您指出的代码在Node.js中创建脚本(我喜欢这种方法,因为它通常更安全,您可以创建测试等)
  • 直接通过MongoDB客户端执行createIndex()

关于何时执行此操作,可以随时创建索引,但建议在将数据插入该集合之前执行此操作。

答案 1 :(得分:0)

例如,在我与mongoDBClient建立连接之后,我像这样呼叫createIndex()

private connectionManager: MongoClient;

public connect(): Promise<void| string> {
    return this.mongoClient.connect()
        .then((mongoClient: MongoClient) => this.connectionManager = mongoClient)
        .then(() => this.setupDBIndexes())
        .catch((e: Error) => console.log('Could not connect to mongo server: ' + e));
}

private setupDBIndexes() {
    return this.connectionManager.db('users').collection('list').createIndex( {"email": 1} as Object, {unique: true})
}
在应用程序的生命周期开始时调用

connect()。我很好奇,如果这也是一个选择,或者有更好的选择。至少我在想,似乎在每个插入操作上都调用createIndex()确实错误